Лидеры
Популярный контент
Показан контент с высокой репутацией 05.02.2018 во всех областях
-
Узнать дату Android приложения
DMS отреагировал Andrey Efimov за вопрос
Вот так попробуйте: uses Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes, Androidapi.Helpers, Androidapi.JNI.App; procedure TForm1.Button1Click(Sender: TObject); var PackageManager: JPackageManager; PackageName: JString; LastUpdateTime: Int64; begin PackageManager := TAndroidHelper.Activity.getPackageManager; PackageName := TAndroidHelper.Context.getPackageName; LastUpdateTime := PackageManager.getPackageInfo(PackageName, 0).lastUpdateTime; // firstInstallTime end; p.s. А вообще, это вы должны были ещё в первом посте указать версию среды...1 балл -
Сохранить дату после uninstall
Равиль Зарипов (ZuBy) отреагировал krapotkin за вопрос
любую Shared папку, которую вам не жалко "захламлять". В остальные вас система не пустит, а не-shared уйдут вместе с программой1 балл -
Прозрачность TlistViewItem
Kitty отреагировал Andrey Efimov за вопрос
Через стиль можно сделать, "itembackground.color" ставим Null. Ну и прозрачность у самого компонента включаем.1 балл -
ессно, определиться с БД если вам не хочется поднимать свой сервер, создавать там БД, делать API к ней, с юзерами, логинами, сессиями и проч, то возьмите готовый back-end типа google Firebase или вон scorocode.ru собсно, остается только с помощью HTTP запросов передавать и принимать информацию. но придумать, как все что вам нужно будет храниться, все равно придется самостоятельно...1 балл
-
Прозрачность TlistViewItem
Виталий Иванов отреагировал Tumaso за вопрос
Равиль, я так понимаю, что вы внесли изменения в стандартный ListView. Скажите плиз, в какой версии делфи взят исходник? берлин? Я это к тому, что при переходе на токио ModernLV нужно будет заново сливать с оригинальным исходником, правильно? Сорри за кучу знаков "вопрос"1 балл -
Прозрачность TlistViewItem
Виталий Иванов отреагировал Равиль Зарипов (ZuBy) за вопрос
поиск по форуму ModernListView, ModernLV1 балл -
Может где тему отдельную завести "исправляем ошибки в fmx сами", где наработки подобные собирать? Сегодня часа 4 убил, что бы найти ошибку разработчиков, что бы TLabel всегда выводил правильный шрифт после обновления информации в себе. Кому интересно, файл FMX.Objects.pas, procedure TText.DoSetText(const Value: string);Ищем строчку FLayout.LayoutCanvas := Canvas; после неё вставляем FLayout.Font := Self.Font;1 балл
-
[Windows] Сворачивание приложение
Равиль Зарипов (ZuBy) отреагировал sargon за вопрос
Старая тема, но столкнулся с такой же проблемой, также добавил WM_SYSCOMMAND, точно также после разворота не активировалось окно, пофиксил это дело, выложу тут, может кому пригодится. Такая же проблема ив Tokyo 10.2.2 - хотелось бы, чтобы такой глюк был пофиксен из коробки, хотя бы в следующей версии WM_SYSCOMMAND: begin if wParam = SC_MINIMIZE then PlatformWin.MinimizeApp else if wParam = SC_RESTORE then PlatformWin.RestoreApp; DefWindowProc(HWND, uMsg, wParam, LPARAM); sleep(50); // у FMX какая-то беда с потоками, иногда при нажатии по иконуе приложения в TaskBar окно не сворачивается а снова активируется, sleep уменьшает количество таких глюков Winapi.Windows.SetActiveWindow(FormToHwnd(LForm)); // после разворота активирует окно - проверил в Berlin и Tokyo 10.2.2 end; Нужно добавить код в FMX.Platform.Win в функцию function WndProc(hwnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;1 балл -
JSON Pretty Print - красивый JSON
ra.eremeev отреагировал Евгений Корепов за вопрос
Долго мучался отсутствием штатного средства красивого вывода JSON в текст, все что есть в комплекте, в REST к примеру, выводит убогую, не читаемую кашу. Плюнул и на написал свою функцию, на базе REST TSON.Format. function JsonPrettyPrint(AJsonValue : TJsonValue; AIndent : string = ' ') : string; var SourceContent: string; AChar: char; EOL: string; LeftIndent: string; isEOL: boolean; isInString: boolean; isInArray: boolean; isEscape: boolean; begin Result:=''; EOL:=#13#10; AIndent:= ' '; LeftIndent:=''; isEOL:=true; isInString:=false; isInArray:=false; isEscape:=false; SourceContent := AJsonValue.ToString; //This will basically display all strings as Delphi strings. Technically we should show "Json encoded" strings here. for AChar in SourceContent do begin case AChar of '{' : if not isInString and not isInArray then begin Result := Result + AChar + EOL; LeftIndent := LeftIndent + AIndent; Result := Result + LeftIndent; isEOL := true; end; ',' : if not isInString and (AChar = ',') then begin isEOL := false; if isInArray then Result := Result + AChar + ' ' else Result := Result + AChar + EOL + LeftIndent; end; '}' : if not isInString then begin Delete(LeftIndent, 1, Length(AIndent)); if not isEOL then Result := Result + EOL; Result := Result + LeftIndent + AChar; end; ':' : if not isInString and (AChar = ':') then Result := Result + AChar + ' '; else begin isEOL := false; Result := Result + AChar; end; end; isEscape := (AChar = '\') and not isEscape; if not isEscape and (AChar = '"') then isInString := not isInString; if not isEscape and (AChar = '[') then isInArray:=True; if not isEscape and (AChar = ']') then isInArray:=False; end; end; Результат налицо: { "Rig": { "Name": "node07", "Account": "3DQ9fRMVfxHaT7noy7molmuhlCI3RQkxt2y8BB", "PowerCost": [4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43, 4.43] }, "ExcavatorInstance": { "Host": "192.168.0.156", "Port": 38080, "APIToken": "asevsdrbdrtnetyjer34yb435t", "ConnectionType": "HTTP" }, "Devices": { "DeviceType": "", "UseDevices": [0, 1, 2, 3, 4] }, "Algorithms": { "cryptonight": { "Enable": true, "Devices_TDP_CoreDelta_MemoryDelta": [108, 150, 500], "WorkerPerDevice": 1, "WorkerParameters": [32, "M=2", 876], "Speed": 1506138068.81243, "Power": 851 }, "lbry": { "Enable": true, "Devices_TDP_CoreDelta_MemoryDelta": [95, 120, -1000], "WorkerPerDevice": 1, "WorkerParameters": [], "Speed": 1506138068.81243, "Power": 851 }, "pascal": { "Enable": true, "Devices_TDP_CoreDelta_MemoryDelta": [108, 150, 500], "WorkerPerDevice": 1, "WorkerParameters": [], "Speed": 1506138068.81243, "Power": 851 }, "decred": { "Enable": true, "Devices_TDP_CoreDelta_MemoryDelta": [108, 150, 500], "WorkerPerDevice": 1, "WorkerParameters": [], "Speed": 1506138068.81243, "Power": 851 }, "neoscrypt": { "Enable": true, "Devices_TDP_CoreDelta_MemoryDelta": [108, 150, 500], "WorkerPerDevice": 1, "WorkerParameters": [], "Speed": 1506138068.81243, "Power": 851 }, "daggerhashimoto": { "Enable": true, "Devices_TDP_CoreDelta_MemoryDelta": [108, 150, 500], "WorkerPerDevice": 1, "WorkerParameters": [], "Speed": 1506138068.81243, "Power": 851 }, "daggerhashimoto_decred": { "Enable": true, "Devices_TDP_CoreDelta_MemoryDelta": [108, 150, 500], "WorkerPerDevice": 1, "WorkerParameters": [], "Speed": 1506138068.81243, "Power": 851 }, "daggerhashimoto_sia": { "Enable": true, "Devices_TDP_CoreDelta_MemoryDelta": [108, 150, 500], "WorkerPerDevice": 1, "WorkerParameters": [], "Speed": 1506138068.81243, "Power": 851 }, "lyra2rev2": { "Enable": true, "Devices_TDP_CoreDelta_MemoryDelta": [95, 120, -1000], "WorkerPerDevice": 1, "WorkerParameters": [], "Speed": 1506138068.81243, "Power": 851 }, "blake2s": { "Enable": true, "Devices_TDP_CoreDelta_MemoryDelta": [108, 150, 500], "WorkerPerDevice": 1, "WorkerParameters": [], "Speed": 1506138068.81243, "Power": 851 }, "equihash": { "Enable": true, "Devices_TDP_CoreDelta_MemoryDelta": [108, 150, 500], "WorkerPerDevice": 1, "WorkerParameters": ["2", "M=1", "676556"], "Speed": 1506138068.81243, "Power": 851 }, "daggerhashimoto_pascal": { "Enable": true, "Devices_TDP_CoreDelta_MemoryDelta": [108, 150, 500], "WorkerPerDevice": 1, "WorkerParameters": [], "Speed": 1506138068.81243, "Power": 851 }, "keccak": { "Enable": true, "Devices_TDP_CoreDelta_MemoryDelta": [108, 150, 500], "WorkerPerDevice": 1, "WorkerParameters": [], "Speed": 1506138068.81243, "Power": 851 }, "sia": { "Enable": true, "Devices_TDP_CoreDelta_MemoryDelta": [108, 150, 500], "WorkerPerDevice": 1, "WorkerParameters": [], "Speed": 1506138068.81243, "Power": 851 } } } Конкретно в текущем случае, массивы мне нужны были в одну строку. Кому понадобиться иное - закомментируйте последние 4 строки.1 балл -
Правила публикации сообщений на этом форуме
PowerOwl отреагировал Brovin Yaroslav за тема
За постоянное нарушение этих правил пользователь может быть забанен, в том числе по адресу IP.Если тема оформлена не правильно, то она будет закрыта. 1. Общие правила Перед тем как создать тему по вашему вопросу, воспользуйтесь поиском по форуму. Форум рассчитан на консультирования применения FireMonkey, решения прикладных задач с использованием FireMonkey. Запрещено публиковать найденные ошибки. Для публикации и решения вопросов ошибок FMX существует специальный ресурс Embarcadero Quality Central. Запрещается обсуждение вопросов не связанных с разработкой и FireMonkey Запрещается использовать нецензурные выражения в тексте и заголовке сообщений 2. Создание темы Одна тема — один вопрос. Два вопроса в одной теме задавать запрещено. Запрещено создавать несколько тем для одного вопроса. Тема должна быть размещена в наиболее подходящем для нее по смыслу разделе. Если такового не имеется, то размещать тему на свое усмотрение. 2.1 Каким должен быть заголовок темы? Вопрос должен быть сформулирован в заголовке темы. Заголовок темы должен содержать не менее 4 слов. Заголовок темы должен формулировать вопрос как можно подробнее. 2.2. Каким должен быть текст вопроса? Текст вопроса нужно начать с указания используемой версии RAD Studio, Версии ОС и модель устройства (если речь идет о мобильной разработке) Текст темы должен максимально подробно описывать суть вопроса. Текст темы должен по возможности содержать иллюстрации. Иллюстрации должны быть не от балды, а иллюстрировать текущее состояние вопроса: то есть, наглядно показывать факт существования описанного поведения. Если ваш вопрос касается конкретного случая разработки, нужно прикрепить проект (только исходные коды в zip архиве) к сообщению. Вставляя код в текст темы, позаботьтесь о том, чтобы он соответствовал стандарту «Руководство по оформлению кода на Pascal» (это можно сделать, при помощи средств автоматического форматирования кода, которые есть в RAD Studio Edit -> Format Source или Ctrl + D), а также не забудьте использовать тег «Код» при оформлении кода в сообщении. 3. Ответы в темы Задавать свой вопрос в чужой теме можно только в случае если ваш вопрос совпадает с вопросом в теме. Отвечать можно на любые темы. При ответе старайтесь подробно описывать решение вопроса. Избегайте лишних сообщений не касающихся решения вопроса.1 балл