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

Ingalime

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

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

  • Посещение

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

    5

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

  1. Like
    Ingalime отреагировална qz5 в Поддержка x32 систем в Google Play   
    Надо включить вот эту галочку:

    Но подробнее в этой статье на английском: https://blog.marcocantu.com/blog/2019-delphi-android-64bit-rad-1033.html
    Читайте там "Android App Bundle Support"
  2. Like
    Ingalime отреагировална Равиль Зарипов (ZuBy) в Поток в Firemonkey Android для скачивания TXT   
    во первых: синхронизация сделана не правильно
    во вторых: в примерах студии есть демка с отображением индикатора загрузки
    в третьих: создание TIdHTTP (лучше заменить на THTTPClient) нужно делать в потоке
     
    код на коленке, без TThread
    // uses System.Threading TTask.Run( procedure var aHTPP: THTTPClient; aStream: TStringStream; aResult: String; begin aResult := ''; aHTPP := THTTPClient.Create; aStream := TStringStream.Create('', TEncoding.UTF8); try aHTTP.Get('урл://', aStream); aResult := aStream.DataString; finally FreeAndNil(aHTPP); FreeAndNil(aStream); end; TThread.Synchronize(TThread.CurrentThread, procedure begin Memo1.Text := aResult; end) end)  
  3. Like
    Ingalime отреагировална qz5 в Поддержка x32 систем в Google Play   
    Нужно выкладывать в формате ААВ. Где-то на форуме была инструкция и на оф.сайте инструкция на английском. Там галочку надо включить в настройках 64-битной версии.
  4. Like
    Ingalime отреагировална Владимир Б. в TMemo для вывода лога тормозит   
    Первая тестовая версия в виде компонента: https://github.com/ange007/TLogViewer
    Изменения по сравнению с изначальной версией: 
    Параметры строки: сообщение, ссылка (для перехода при двойном клике), стиль, цвет Добавлено выделение "от и до" при помощи Shift мышкой Добавлена смена строк с клавиатуры (вверх, вниз) Добавление строк списком (правда пока без стилизации и ссылок) Ну и по мелочи в связи с переводом в компонент Чего нет но надо-бы:
    Выделение через Ctrl (по одному) Выделение "от и до" при помощи Shift с клавиатуры Расширение функциональности меню Хранение в каком-то виде "удалённых" в связи с "заполнением буфера" пунктов, с дальнейшим повторным отображением при необходимости Многострочный текст
  5. Like
    Ingalime отреагировална slav_z в Требуется приложение на на все смартфоны   
    хорошо! тогда обнуляйте ExceptionMessage вместе с break; т.к. на одной из предыдущих итерации сервер может вернуть не 200 (черт его знает)... и вообще проверка <>'Такой но...' должна выполняться только если сервер вернул 200.... кроме того надо выходить из цикла если пользователь закрывает программу во время вашей обработки (Thread.CheckTerminated кажется)...  иначе, пока ваш цикл полностью не отработает, программа не закроется...
  6. Like
    Ingalime отреагировална Slym в TSpinBox   
    Никак. Читайте что такое числа с плавающей точкой.
    1 правило работы с плавающей точкой: Нельзя проверять 2 числа на равенство оператором =
    нельзя:
    const dx:double=143.201; const sx:single=143.201; begin assert(dx=sx); end;  
  7. Like
    Ingalime отреагировална dnekrasov в TSpinBox   
    От себя добавлю - для сравнения есть чудесная функция System.Math.CompareValue
    Ещё гляньте System.Math.Vectors.TEpsilon - там есть полезные константы
  8. Like
    Ingalime отреагировална Дмитрий Ш. в как ускорить обработку данных   
    изучаем SQL. 
    Insert into T1 (id, cnt) select clnt_id, count(*) from T2 group by 1
  9. Like
    Ingalime отреагировална Slym в Свойства стиля у TSwitch   
    Мда...
    На такой случай мы патчим FMX.Controls.pas
    procedure TStyledControl.StyleDataChanged(const Index: string; const Value: TValue); var Obj: TObject; InstanceName, PropertyName: string; PropertyValue: TValue; begin PropertyName := Index; InstanceName := GetToken(PropertyName, '.'); if SameText(InstanceName,'self') then Obj:=FResourceLink else Obj := FindStyleResource(InstanceName); if Obj <> nil then и тогда ReleSwitch.StylesData['self.Fill.Color']
  10. Like
    Ingalime отреагировална Slym в Свойства стиля у TSwitch   
    ReleSwitch.StylesData['АГДЕКОМУ?.Fill.Color']
    обязательно должен быть АГДЕКОМУ
    если этот АГДЕКОМУ это кореть стиля - то поместит стиль в TLayout, а этот самый АГДЕКОМУ дать имя
  11. Like
    Ingalime отреагировална Savage в Изменение стандартного звука а push-уведомлении   
    Добавил многострочность в PUSH-уведомление
    Надо или нет пересобирать classes.dex точно не скажу. Говорят, что на 10.2.3 не надо
    Вначале просто подбросить в проект fmx.jar , если изменений нет, то и classes.dex
     
    NotificationPublisher.zip
  12. Like
    Ingalime отреагировална Savage в Изменение стандартного звука а push-уведомлении   
    Задачу решил.
    Вот измененная процедура, ну и добавил вытягивание параметра sound
        private Builder buildNotification(String msgTitle, String msgText, String msgSound, PendingIntent contentIntent) {
            int icon = this.mContext.getApplicationContext().getApplicationInfo().icon;
            Builder mBuilder = new Builder(this.mContext);
            mBuilder.setSmallIcon(icon);
            mBuilder.setTicker(msgTitle);
            mBuilder.setContentTitle(msgTitle);
            mBuilder.setContentText(msgText);
            mBuilder.setContentIntent(contentIntent);
    // savage
            if (msgSound == "") {
               mBuilder.setSound(RingtoneManager.getDefaultUri(2));
            }
            else
            {
              mBuilder.setSound(Uri.parse("android.resource://" + this.mContext.getPackageName() + "/raw/"+msgSound));
            }
    //
            return mBuilder;
        }
    Звуковой файл надо добавить в Deployment
    Расположение res/raw/
    При формировании push-сообщения имя файла указывается без расширения. К примеру, если звуковой файл был event1.mp3, то в пуше посылаем "sound":"event1"
     
    Во вложении патченый файл.
    Сборка fmx.jar и classes.dex как в этой теме
     
    NotificationPublisher.zip
  13. Like
    Ingalime отреагировална Вячеслав в com-порт FireMonkey   
    Авторство всецело не мое, только правки вносил, т.к. в разных версиях студии код вел себя по-разному. 
    Прощу прощения за то, что выкладываю в неудобной форме, просто из моего проекта сейчас это будет уже достаточно проблематично вытащить.
     
    Код для использования:
    На форме лежат Мемо, кнопки открытия/закрытия, эдит для отправляемых текстов и кнопка отправить. в паблике у формы добавляем объект GPort: TComPort; // ****************************************************************************** // ПРОЦЕДУРЫ РАБОТЫ С COM ПОРТОМ // открываем порт procedure TFormChannels.OpenPort(PortNum: Byte); begin GPort := TComPort.Create(PortNum, br9600); GPort.OnRead := FormChannels.OnRead; GFlagOpen := true; FormChannels.ButtonClosePort.Enabled := true; end; // закрываем порт procedure TFormChannels.ClosePort; begin GPort.Free; end; // отправляем в порт данные procedure TFormChannels.WritePort(strWrite: string); var arrBytes: array of Byte; i: Integer; begin if GFlagOpen = False then // проверяем, открыт ли порт OpenPort(strtoint(edtPort.Text)); // если нет, то открываем SetLength(arrBytes, Length(strWrite)); for i := Low(arrBytes) to High(arrBytes) do arrBytes[i] := Ord(strWrite[i + 1]); GPort.Write(arrBytes); arrBytes := nil; end; // читаем данные из порта procedure TFormChannels.OnRead(Sender: TObject; ReadBytes: array of Byte); var i: Integer; begin memRead1.Lines.BeginUpdate; for i := Low(ReadBytes) to High(ReadBytes) do begin if i > Low(ReadBytes) then memRead1.Text := memRead1.Text; // + '.'; memRead1.Text := memRead1.Text + char(ReadBytes[i]); end; // подчищаем заполняющийся Мемо if memRead1.Lines.Count > 5 then begin // memRead1.Clear; memRead1.Lines.Delete(0); memRead1.Lines.Delete(1); end; memRead1.Lines.EndUpdate; end; procedure TFormChannels.ButtonClosePortClick(Sender: TObject); begin ClosePort; end; // открываем порт кнопкой procedure TFormChannels.ButtonOpenPortClick(Sender: TObject); begin OpenPort(strtoint(edtPort.Text)); end; // отправляем в порт данные кнопкой procedure TFormChannels.btnWriteClick(Sender: TObject); begin WritePort(FormChannels.edtWrite.Text); end; // КОНЕЦ ПРОЦЕДУР РАБОТЫ С COM ПОРТОМ // ****************************************************************************** ComPort.zip
  14. Like
    Ingalime отреагировална dnekrasov в Задать стиль текста в RunTime   
    Посмотрите TFont.StyleExt
  15. Like
    Ingalime отреагировална x11 в ListBox, Edit и клавиатура   
    Keep Controls Visible When Virtual Keyboard Pops Up In Delphi
    http://www.fmxexpress.com/keep-controls-visible-when-virtual-keyboard-pops-up-in-delphi-10-2-tokyo-on-android-and-ios/
  16. Like
    Ingalime отреагировална Уроки программирования в ListBox, Edit и клавиатура   
    Вот видео как делать https://www.youtube.com/watch?v=-MEU2NYWMj0&feature=youtu.be 
    Сам проект https://yadi.sk/d/nRptAlQFBmTytg
  17. Like
    Ingalime отреагировална #WAMACO в [iOS] Приложение запускается на iOS Simulator и тут же закрывается.   
    Только устройство! Что тут еще можно советовать....
     
  18. Like
    Ingalime отреагировална Евгений Корепов в TThread.GetTickCount64 хелпер для TThread   
    По умолчанию в TThread классовая функция GetTickCount имеет тип Cardinal, соответственно если приложение рассчитано на долговременную работу, то через 40 дней результат этой функции или уложит приложение (если отключена защита от переполнения) или превратит приложение в тыкву (если на этом завязана какая то логика).
    Для своего проекта написал хелпер для класса TThread, вдруг кому пригодится. Тестил на win10 x64 и linux x64. 
    unit UnitTThreadHelper; interface uses {$IFDEF MSWINDOWS} Winapi.Windows, {$ENDIF MSWINDOWS} {$IFDEF POSIX} Posix.SysTypes, {$IFDEF MACOS} Macapi.CoreServices, {$ENDIF MACOS} {$IFDEF ANDROID} Posix.Fcntl, {$ENDIF ANDROID} {$IFDEF LINUX} Posix.Time, {$ENDIF LINUX} {$ENDIF POSIX} System.Classes; type TThreadHelper = class helper for TThread class function GetTickCount64 : Int64; static; end; implementation class function TThreadHelper.GetTickCount64 : Int64; {$IF Defined(MSWINDOWS)} begin Result := Winapi.Windows.GetTickCount64; end; {$ELSEIF Defined(MACOS)} begin Result := AbsoluteToNanoseconds(mach_absolute_time) div 1000000; end; {$ELSEIF Defined(POSIX)} var res: timespec; begin clock_gettime(CLOCK_MONOTONIC, @res); Result := (Int64(1000000000) * res.tv_sec + res.tv_nsec) div 1000000; end; {$ELSE OTHERPLATFORM} {$MESSAGE Fatal 'Method not implemented for Platform'} {$ENDIF OTHERPLATFORM} end. При попытке запуска на win x32 упадет  - не используйте или проверяйте битность:
    if CheckWin32Version(6, 0) then begin GetTickCount64; end else begin GetTickCount; end;  
  19. Like
    Ingalime отреагировална MAD_EVAL в Шрифты для Android в Rio   
    Погорячился с вопросом, разобрался сам. Может кому надо, вот файл для RIO.
    Подключайте к проекту, прописывайте
    TextSettings.Font.Family := 'font_name'; //  без расширения ttf
    ну и в assets\internal задеплоить сам ttf файл
    FMX.FontGlyphs.Android.zip
  20. Like
    Ingalime отреагировална IS1 в Custom Font как сделать?   
  21. Like
    Ingalime отреагировална Yarpda в Проблема с Android Service   
    Тоже заметил, что с aab есть проблемы. Иногда почему-то устанавливается 64 битная версия на 32 битный аппарат, соотвественно дальше сплеша на таких устройствах не идет. Если делать Apk с двумя версиями, то такой проблемы не наблюдается.
    Но вышеописанное можно сделать гораздо проще. Надо в деплое 64 битной версии добавить файл  so из 32 битной версии и помещаем его в папку library\lib\armeabi-v7a\ .
    Для создания APK из двух версии. сначала компилируем 32 битную версию, потом 64 битную, но в Apk 64 битной версии уже попадет и 32 битная. И заморачиваться с отдельным подписанием не надо будет. Все сделает среда.
  22. Like
    Ingalime отреагировална Slym в Раскрасить Bitmap.   
    initialization   RegisterClass(TFillRGBEffect);  
  23. Like
    Ingalime отреагировална SergB в Проблема с Android Service   
    Ну и по традиции отвечаю опять я ?. Решил я эту проблему.
    Я так и не разобрался, где происходит неполадка, либо при формировании aab делфой, либо при формировании установочных файлов при установке с гугла. НО, я поступил следующим образом.
    1. Компилируем в делфе отдельно 32 и 64 apk
    2. Открываем архиватором apk 64 и копируем из него папку arm64-v8a со всем содержимым куда-нибудь на диск
    3. Копируем эту папку arm64-v8a в apk 32.
    Итого получаем apk 32 содержащий либы для 32 и 64. (что и нужно гуглу). Но после этого наш файл не подписан. Можно подписать и с компа, но это тот еще геморрой. Я подписывал прямо на телефоне с помощью программы ZipSinger. Может есть и другие, но я делал с ней и все сработало.
    После подписания загружаем наш гибридный apk в гугл и все работает без проблем ?.
    Ну еще раз скажу, что эта проблема с формированием aab у меня возникла лишь когда я добавил в свое приложение сервис. Если нет сервиса то проблем с aab я не наблюдал.
  24. Like
    Ingalime отреагировална Slym в Как определить версию Андроид?   
    System.SysUtils.TOSVersion.Architecture
    SizeOf(NativeInt)=8
  25. Like
    Ingalime отреагировална SVTX в Урезание экрана IOS после перехода на последний XCode   
    Исправилось обновлением файла special.info.plist до актуальных версий IOS
×
×
  • Создать...