Перейти к содержанию
Fire Monkey от А до Я

ra.eremeev

Пользователи
  • Постов

    96
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Активность репутации

  1. Like
    ra.eremeev получил реакцию от Rusland в XCode версия   
    Доброго времени суток!
    Может кому пригодится: конфигурация Berlin отлично работает с MacOS High Sierra + SKD 11
    Виртуалка для Hight Sierra доступна по ссылке
  2. Like
    ra.eremeev получил реакцию от Ingalime в XCode версия   
    Рутрекер не фейковый - это одно из зеркал. У меня работает именно оно. Ваша ссылка, к сожалению, недоступна
    Про связку - поторопился. При сборке arm64 именно на этом SDK и не работает
    Тот самый Linked Error 1.
    Возвращаюсь в начало топика: есть ли решение по скрещиванию SDK старше 11 и Berlin?
  3. Like
    ra.eremeev получил реакцию от Ingalime в XCode версия   
    Доброго времени суток!
    Может кому пригодится: конфигурация Berlin отлично работает с MacOS High Sierra + SKD 11
    Виртуалка для Hight Sierra доступна по ссылке
  4. Like
    ra.eremeev получил реакцию от Ingalime в Отображение картинок в ListView   
    Выкладываю решение. Надеюсь, кому-то будет полезно
    Есть ощущение, что это очередной костыль, но работает.
    Проблема - в необходимости перерисовки вручную добавленного TListItemImage после загрузки его Bitmap в потоке.
     
    LoadBitmaps.zip
  5. Like
    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 строки.
  6. Like
    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;
  7. Like
    ra.eremeev отреагировална DimArt в Не отображается TListItemImage   
    Решение проблемы оказалось простое. Добавил всего две строчки кода и всё заработало. В OnUpdateObjects добавил ItemImage2.OwnsBitmap:=false; а после загрузки изображения ItemImage2.OwnsBitmap:=true;
  8. Like
    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;  
  9. Like
    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.
    Буду ОЧЕНЬ БЛАГОДАРЕН за помощь!
  10. Like
    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.
    Буду ОЧЕНЬ БЛАГОДАРЕН за помощь!
  11. Like
    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.
    Буду ОЧЕНЬ БЛАГОДАРЕН за помощь!
  12. Like
  13. Like
    ra.eremeev получил реакцию от zairkz в Не отображает иконки приложения   
    Какой-то глюк - проблема самоустранилась через некоторое время. Когда уже надежду всю потерял.
    Ничего не менял и не перепрописывал. Просто иконки стали появляться и все.
    Всем спасибо!
  14. Like
    ra.eremeev получил реакцию от zairkz в Загрузка файлов из интернета   
    Сам отвечу на свой же вопрос: DDOS-атака идентифицируется благодаря Bitmap.LoadFromUrl (uses FMX.Features.Bitmap.Helpers).
    В процедуре используется связка: инициализация idhttp и закрытие соединения (удаление) idhttp.
    Множественные сессии и вызывают схожесть с DDOS...
  15. Like
    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
×
×
  • Создать...