-
Постов
96 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Активность репутации
-
ra.eremeev получил реакцию от Rusland в XCode версия
Доброго времени суток!
Может кому пригодится: конфигурация Berlin отлично работает с MacOS High Sierra + SKD 11
Виртуалка для Hight Sierra доступна по ссылке
-
ra.eremeev получил реакцию от Ingalime в XCode версия
Рутрекер не фейковый - это одно из зеркал. У меня работает именно оно. Ваша ссылка, к сожалению, недоступна
Про связку - поторопился. При сборке arm64 именно на этом SDK и не работает
Тот самый Linked Error 1.
Возвращаюсь в начало топика: есть ли решение по скрещиванию SDK старше 11 и Berlin?
-
ra.eremeev получил реакцию от Ingalime в XCode версия
Доброго времени суток!
Может кому пригодится: конфигурация Berlin отлично работает с MacOS High Sierra + SKD 11
Виртуалка для Hight Sierra доступна по ссылке
-
ra.eremeev получил реакцию от Ingalime в Отображение картинок в ListView
Выкладываю решение. Надеюсь, кому-то будет полезно
Есть ощущение, что это очередной костыль, но работает.
Проблема - в необходимости перерисовки вручную добавленного TListItemImage после загрузки его Bitmap в потоке.
LoadBitmaps.zip
-
ra.eremeev отреагировална Евгений Корепов в JSON Pretty Print - красивый JSON
Долго мучался отсутствием штатного средства красивого вывода 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 строки.
-
ra.eremeev отреагировална xenon54 в Сохранение Tbitmap в формате jpeg
uses FMX.Surfaces; //--------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var sp : TBitmapCodecSaveParams; bs : TBitmapSurface; B : TBitmap; begin B := TBitmap.Create; // исходная картинка B.LoadFromFile('...'); sp.Quality := 70; bs := TBitmapSurface.Create; bs.Assign(; TBitmapCodecManager.SaveToFile('FileName', bs, @sp); bs.Free; B.Free; end; -
ra.eremeev отреагировална DimArt в Не отображается TListItemImage
Решение проблемы оказалось простое. Добавил всего две строчки кода и всё заработало. В OnUpdateObjects добавил ItemImage2.OwnsBitmap:=false; а после загрузки изображения ItemImage2.OwnsBitmap:=true;
-
ra.eremeev отреагировална Rusland в Запуск приложения от PUSH-уведомления
Slava Marchenko подсказал что при закрытом приложении получить сам текст можно так:
procedure TFormMain.FormActivate(Sender: TObject); var CurNotification : TPushServiceNotification; begin if Length(fPushService.StartupNotifications) > 0 then for CurNotification in fPushService.StartupNotifications do if Assigned(CurNotification) then Memo.Lines.Text := CurNotification.Json.ToJSON; end;
-
ra.eremeev получил реакцию от Ingalime в Запуск приложения от PUSH-уведомления
Добрый день, Друзья!
Помогите, пожалуйста, разобраться - в голове уже каша
Как в Delphi можно реализовать обработку поступающих на устройство PUSH-уведомлений при выгруженном или свернутом приложении?
При запущеном и активном приложении проблем нет - использую OnReceiveNotificationEvent(Sender: TObject; const ANotification: TPushServiceNotification) в связке с TNotificationCenter.
Эта процедура у меня:
1. очищает все активные уведомления;
2. создает в TNotificationCenter последнее пришедшее, которое и отображается пользователю.
Его обработчик мной реализован.
"Проблемы" есть если приложение выгружено или свернуто...
Есть 2 очень похожих сценария:
Сценарий №1: Приложение выгружено из памяти. Приходит PUSH. Пользователь нажимает на него. Приложение запускается. OnReceiveNotificationEvent после запуска не отрабатывает. Как обработать событие - не знаю
Сценарий №2: Приложение запущено, но свернуто. Приходит PUSH. Пользователь нажимает на него. Приложение становится активным. После этого отрабатывает OnReceiveNotificationEvent: очищаются уведомления и создается новое. Пользователю надо повторно на него нажать и тогда сработает обработчик.
Вопрос: Как получить текст (или любое другое поле - не важно) ЭТОГО push-уведомления после запуска/вывода приложения из фона?
Допущение: Если ЭТО уведомление (запустившее приложение) идентифицировать нельзя, то как можно понять, что запуск произведен именно по нажатию на push?
Задача актуальна не только для Android, но и iOS.
Буду ОЧЕНЬ БЛАГОДАРЕН за помощь!
-
ra.eremeev получил реакцию от Евгений Корепов в Запуск приложения от PUSH-уведомления
Добрый день, Друзья!
Помогите, пожалуйста, разобраться - в голове уже каша
Как в Delphi можно реализовать обработку поступающих на устройство PUSH-уведомлений при выгруженном или свернутом приложении?
При запущеном и активном приложении проблем нет - использую OnReceiveNotificationEvent(Sender: TObject; const ANotification: TPushServiceNotification) в связке с TNotificationCenter.
Эта процедура у меня:
1. очищает все активные уведомления;
2. создает в TNotificationCenter последнее пришедшее, которое и отображается пользователю.
Его обработчик мной реализован.
"Проблемы" есть если приложение выгружено или свернуто...
Есть 2 очень похожих сценария:
Сценарий №1: Приложение выгружено из памяти. Приходит PUSH. Пользователь нажимает на него. Приложение запускается. OnReceiveNotificationEvent после запуска не отрабатывает. Как обработать событие - не знаю
Сценарий №2: Приложение запущено, но свернуто. Приходит PUSH. Пользователь нажимает на него. Приложение становится активным. После этого отрабатывает OnReceiveNotificationEvent: очищаются уведомления и создается новое. Пользователю надо повторно на него нажать и тогда сработает обработчик.
Вопрос: Как получить текст (или любое другое поле - не важно) ЭТОГО push-уведомления после запуска/вывода приложения из фона?
Допущение: Если ЭТО уведомление (запустившее приложение) идентифицировать нельзя, то как можно понять, что запуск произведен именно по нажатию на push?
Задача актуальна не только для Android, но и iOS.
Буду ОЧЕНЬ БЛАГОДАРЕН за помощь!
-
ra.eremeev получил реакцию от ENERGY в Запуск приложения от PUSH-уведомления
Добрый день, Друзья!
Помогите, пожалуйста, разобраться - в голове уже каша
Как в Delphi можно реализовать обработку поступающих на устройство PUSH-уведомлений при выгруженном или свернутом приложении?
При запущеном и активном приложении проблем нет - использую OnReceiveNotificationEvent(Sender: TObject; const ANotification: TPushServiceNotification) в связке с TNotificationCenter.
Эта процедура у меня:
1. очищает все активные уведомления;
2. создает в TNotificationCenter последнее пришедшее, которое и отображается пользователю.
Его обработчик мной реализован.
"Проблемы" есть если приложение выгружено или свернуто...
Есть 2 очень похожих сценария:
Сценарий №1: Приложение выгружено из памяти. Приходит PUSH. Пользователь нажимает на него. Приложение запускается. OnReceiveNotificationEvent после запуска не отрабатывает. Как обработать событие - не знаю
Сценарий №2: Приложение запущено, но свернуто. Приходит PUSH. Пользователь нажимает на него. Приложение становится активным. После этого отрабатывает OnReceiveNotificationEvent: очищаются уведомления и создается новое. Пользователю надо повторно на него нажать и тогда сработает обработчик.
Вопрос: Как получить текст (или любое другое поле - не важно) ЭТОГО push-уведомления после запуска/вывода приложения из фона?
Допущение: Если ЭТО уведомление (запустившее приложение) идентифицировать нельзя, то как можно понять, что запуск произведен именно по нажатию на push?
Задача актуальна не только для Android, но и iOS.
Буду ОЧЕНЬ БЛАГОДАРЕН за помощь!
-
ra.eremeev отреагировална Кривяков Виталий в Зависимость от регистра русских символов при использовании LIKE
Не вопрос.
SQLITE.zip
-
ra.eremeev получил реакцию от zairkz в Не отображает иконки приложения
Какой-то глюк - проблема самоустранилась через некоторое время. Когда уже надежду всю потерял.
Ничего не менял и не перепрописывал. Просто иконки стали появляться и все.
Всем спасибо!
-
ra.eremeev получил реакцию от zairkz в Загрузка файлов из интернета
Сам отвечу на свой же вопрос: DDOS-атака идентифицируется благодаря Bitmap.LoadFromUrl (uses FMX.Features.Bitmap.Helpers).
В процедуре используется связка: инициализация idhttp и закрытие соединения (удаление) idhttp.
Множественные сессии и вызывают схожесть с DDOS...
-
ra.eremeev отреагировална Равиль Зарипов (ZuBy) в [TBitmap] Загрузка изображений из интернета в приложение
idhttp1.Create(Application); - что это за бред?
IdHTTP - это откуда взялось?
никогда и никому этот код не показывай
берем файлик во вложении подключаем в проекте и пишем
with ListView1.Items.Add do begin Text := 'Text'; Bitmap.LoadFromUrl('http://site.ru/icons/icon.png'); end; не проверял, но должно работать. не нужно пихать в поток, там итак уже используется
FMX.Features.Bitmap.Helpers.zip