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

Ingalime

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

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

  • Посещение

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

    5

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

  1. Like
    Ingalime отреагировална Олег Киреев в Приложение (OS Andr) для получения информации расчётным путём об углах в карданном вале v.5.   
    Приложение для получения информации расчётным путём об углах:
    - вертикальной плоскости;
    - в горизонтальной плоскости;
    - объёмный;
    - эквивалентный
     в шарнирах карданных валов на
    основе сделанных замеров на собранном автобусе, троллейбусе, грузовике.
    Может пригодиться работникам сервисных служб, лицам эксплуатирующим грузовую или
    пассажирскую автомобильные техники, лицам не конструкторских служб. 
    Особенно в случае нахождения в месте недоступном к интернету и компьютеру.
    Работает на устройствах под OS Android.
    Существует и более расширенная версия для OS Windows.
    Пожалуйста, с предложениями и пожеланиями обращайтесь к разработчику:
    Кирееву Олегу по тел. +375 29 676 13 84 или пишите на kireevoleg1966@gmail.com.
     Буду рад Вашему любому отзыву.
     С Уважением.
     
     
     
     
     
     
     
     
     
     
     
     
    UgolKardZamer_v5.rar








  2. Like
    Ingalime отреагировална Vitaldj в Мобильная разработка на Delphi - программа для врачей по оценке взаимодействий лекарств.   
    Коллеги, я опубликовал на сайте FGX свое приложение. Можете «щупать». ?
     
    https://forum.fgx-native.com/topic/76-медицинская-программа-для-оценки-взаимодействия-препаратов/
  3. Like
    Ingalime отреагировална Сергей Сергеев в Проблема с Андроид 6   
    мой 39 ! есть куда расти еще..
    пс. ПОМОГЛО! вместо ааб- апк сборный и андроид 6 заработал из магазина. Похоже  дельфи бракованный ааб  ( для Андроида 6 ) собирает.. 
  4. Like
    Ingalime отреагировална Edward Tarasov в "Приложение остановлено" при использовании PUSH   
    Решение найдено, еще раз пересмотрел статью Равиля, этого там нет.
    необходимо для андройд также добавить Google application id  из firebase в Project->Options->Services->Google application id 
  5. Like
    Ingalime отреагировална Сергей Сергеев в Проблема с Андроид 6   
    Нашел несколько тем на форуме Дельфи ( андр 5 - крах и т.д.) везде спасает даунгрейд ndk ( для 5.1 до 21) сейчас тоже буду подбирать. 
    Форум Дельфи например, также по моему зависит от версии JDK 
    вопрос  о том, какие SDL/NDK версии будут работать на Андр 5-10 - без ответа..
    пс. поставил NDK - 22 - заработало на 5.1 ( раньше по проводу не работало с NDK 24)
     
  6. Like
    Ingalime отреагировална Евгений Корепов в Логика авторизации по отпечатку пальца   
    В телефоне нет никаких гарантированных аппаратных данных - или по причине китайщины, или по тому что их можно изменить. Если уже вам так хочется "привязаться" к чему то неизменному, то привязывайтесь к телефонному номеру. Хотя и его может не быть. 
    Палец не панацея - у вас нет никаких гарантий что палец принадлежит владельцу персональных данных. 100% дактилоскопических данных пользователя у вас нет, а на этапе "привязки" пальца, телефон уже может быть в руках злоумышленника.
    У вас не получится сделать идеальную систему с абсолютной системой от дурака. Поэтому я и предложил исходить из того что приложение на телефоне запускает легальных пользователь. Все иное должно описываться в политике конфиденциальности, типа мы чтим закон о ПД, но если вы долбоклюй и отдали телефон и пинкод постороннему, то вы сами пролюбили свою медкарту.
    И пинкод никак не позволит войти на другом устройстве - пин код сохраняется локально на устройстве, в папке приложения. И если пользователь ввел его верно, то запросы на сервер авторизуются с заранее сохраненного на устройстве токена (guid, куки или что вам больше нравится). 
    Ситуации "А если кто взломает телефон и перенесет какой то файл на другое устройство" вас не должны волновать абсолютно. Вы предоставили пользователю приложение, а задача пользователя  - не пролюбить телефон и свои персональные данные. Дополнительно вы прикрываете свою задницу политикой конфиденциальности, где описываете что не обязаны охранять пользователя и его телефон круглые сутки.
  7. Like
    Ingalime отреагировална mazayhin в Логика авторизации по отпечатку пальца   
    На форуме была тема про кейстор, с скидывал пример работы с ним (плохенький, но работает)
    Для входа по пин коду:
    Генерируйте ключ, ставьте пин на него, храните в кейсторе, гугл вроде как гарантирует неизвлекаемость ключа. Шифруйте данные авторизации и храните их да хоть в загрузках. Без ключа они бесполезны. Далее пытайтесь расшифровать и работать с ними. Не расшифровались-не тот ключ. Нет доступа к ключу-не тот пин.
    Если следовать закону, то не удивлюсь, что шифрование должно быть ГОСТ..
  8. Like
    Ingalime отреагировална slav_z в Добавить iOS в существующий проект   
    хотел бы я сказать, что это можно сделать через IDE, но...
    откройте файл <project_name>.dproj, идите в самый конец. найдите секцию <Platforms> и добавьте туда что надо. например это может выглядеть так:
    <Platforms> <Platform value="Android">True</Platform> <Platform value="Android64">True</Platform> <Platform value="iOSDevice32">True</Platform> <Platform value="iOSDevice64">True</Platform> <Platform value="iOSSimulator">True</Platform> <Platform value="OSX32">True</Platform> <Platform value="OSX64">True</Platform> <Platform value="Win32">True</Platform> <Platform value="Win64">True</Platform> </Platforms>  
     
     
  9. Like
    Ingalime отреагировална Олег Киреев в Не работает TModel3D.Loadfromfile   
    Здравствуйте.
    Предлагаю вместо родной 3D библиотеки установить бесплатную GLScene. Ссылок скачиваний море. Я пользуюсь давно. Конечно не идеал но лучше родной.
    С Уважением. Олег.
  10. Like
    Ingalime отреагировална aleksandrguru в Зарезервировать данные приложения на Google Drive   
    У TMS был компонент готовый https://www.tmssoftware.com/site/tmsfnccloudpack.asp
  11. Like
    Ingalime отреагировална Andrey Efimov в Зарезервировать данные приложения на Google Drive   
    Есть ещё вот такие компоненты: CData Enterprise Connectors
  12. Like
    Ingalime отреагировална krapotkin в Свой APK updater. Использование Fileprovider   
    У меня в работе два приложения, и оба они не предназначены для Play market, так как имеют ограниченный круг использования, по сути, чисто внутрикорпоративные. Так что нежелательно и выкладывание их и на альтернативные магазины приложений. 
    Автоматически возникает вопрос обновления. Если в  первый раз мы можем установить приложение сами при помощи админов, то обновлять их не так просто. А контингент пользователей не справится с "скачайте APK по ссылке, найдите, куда его скачал браузер, и запустите вручную именно последний скачанный, а не какой попало"...
    Простейший способ - дать приложению скачать свежую копию с сайта и натравить на полученный файл системный инсталлер.
    Вот только свежие Andoird делать это напрямик запрещают. Нужен filepropvider. Целый день шуровал по мануалам и YT,
    Вот то что получилось  в результате.
    Если у вас 10.3.3 как у меня, уже можно не вносить <provider>...</provider> в манифест и свой файл file_paths.xml (или как вам его советуют назвать в интернетах) в деплой.
    Теперь все это делается хоть несколько странно и однобоко, но автоматически, путем установки галочки Secure File Sharing

    после этого в манифесте автоматически пропишется один из вариантов размещения файлов, которые вы можете найти в интернете. Используется алиас external-path
    файл, показанный на рисунке, создается автоматически самой делфи.

    теперь остается отгадать, какой путь реально подставится вместо "."
    Как показала практика, все пути выглядят не так, как кажется, если исходить из простого здравого смысла. Целый день использования GetHomeDir и других полезных методов TPath завел меня совсем в тупик.
    Оказалось все проще (?)
    st:TMemoryStream; OutputDir: JFile; ApkFile: JFile; ApkUri: Jnet_Uri; path, filename: string; ... OutputDir := TAndroidHelper.Context.getExternalCacheDir(); path := JStringToString(OutputDir.getAbsolutePath); filename := path+'/ASDroid2.apk'; ApkFile := TJfile.JavaClass.init( StringToJstring(filename)); FApkUri := TAndroidHelper.JFileToJURI(ApkFile); st.Position := 0; st.SaveToFile(filename); обратите внимание, в provider_paths мы задаем external-paths, а в коде ищем ExternalCacheDir.!!!  (For.Unbelievably.Creative.Knowers!)
    Потом все просто. FApkUri передаем в интент и запускаем 
    итоговый код примерно таков. (скачивание в потоке с использованием небольшого собственного API, но там ничего важного, можно не обращать внимания)
    procedure TasdSettingsFrame.bDownloadClick(Sender: TObject); begin {$IFDEF ANDROID} bDownload.Enabled := False; DownloadAndRun(); {$ENDIF} end; {$IFDEF ANDROID} procedure TasdSettingsFrame.DownloadAndRun(); begin ttask.Run(procedure var aapi:TasdAPI; st:TMemoryStream; OutputDir: JFile; ApkFile: JFile; ApkUri: Jnet_Uri; path, filename: string; begin st := TMemoryStream.Create; aapi := TasdAPI.Clone(_API); try aapi.OnReceiveData := OnReceiveData; aapi.getApk(st); if aapi.Err.Code=0 then begin OutputDir := TAndroidHelper.Context.getExternalCacheDir(); path := JStringToString(OutputDir.getAbsolutePath); filename := path+'/ASDroid2.apk'; ApkFile := TJfile.JavaClass.init( StringToJstring(filename)); FApkUri := TAndroidHelper.JFileToJURI(ApkFile); st.Position := 0; st.SaveToFile(filename); TThread.Synchronize(nil,procedure begin bDownload.Enabled := true; StartActivity(FApkUri); end); end; finally st.Free; aapi.Free; end; end); end; procedure StartActivity(ApkUri: Jnet_Uri); var Intent: JIntent; begin Intent := TJIntent.Create(); Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK or TJIntent.JavaClass.FLAG_ACTIVITY_CLEAR_TOP or TJIntent.JavaClass.FLAG_GRANT_WRITE_URI_PERMISSION or TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION); Intent.setDataAndType(apkuri, StringToJString('application/vnd.android.package-archive')); TAndroidHelper.Activity.startActivity(Intent); end; procedure TasdSettingsFrame.OnReceiveData(const Sender: TObject; AContentLength: Int64; AReadCount: Int64; var Abort: Boolean); begin tthread.Synchronize(nil, procedure begin pb1.Max := AContentLength; pb1.Value := AReadCount; end); end; {$ENDIF} Вопросы остались конечно, почему так странно с каталогами, но выяснять пока нет желания. Работает - не трожь.
    Всем удачи.
    UPD.
    Для того, чтобы системный инсталлер запускался, нужно не забыть отметить еще одну галочку

     
     
     
     
     
  13. Like
    Ingalime отреагировална krapotkin в Ошибка java.lang.IllegalArgumentException: Unable to load native library... libProject1.so   
    В процессе разработки столкнулся с очень странной ситуацией, корни которой до сих пор неясны, но решение нашлось.
    Итак. Делфи 10.3.3. Чистое приложение - пустая форма и кнопка. Отлично работает на разных устройствах кроме Samsung Galaxy Tab A (2016). Android 5.1.1
    Программа падает, не успев даже загрузиться. Любая. При этом она же, скомпилированная на другом компе, запускается нормально. И даже после изменения SDK/NDK на нем, ничего не падает.
    LogCat дает крайне странную картину
    java.lang.IllegalArgumentException: Unable to load native library: /data/app-lib/com.embarcadero.Project1-1/libProject1.so
    Начинаем экспериментировать с SDK, NDK и т.д. Поставил также хотфиксы для 10.3.3.
    Сразу скажу, SDK/NDK ставились отдельно через Android studio, не скачивались вместе с Delphi. Не торопитесь бросать чтение на этом месте!)) На другом компе, где все работает, все ставилось точно так же.
    Короче, очень много комбинаций версий SDK/NDK проверено.
    Результат такой. При постепенном понижении версии NDK все взлетело при NDK v22.

    При этом версия SDK видимо такого большого влияния не имеет, потому что этот вариант нормально работает

    Повторюсь. На других устройствах все работало и на более новых Ndk. Xiaomi Mi Pad4 , Samsung Galaxy Tab A (2019), Xiaomi Redmi 5 и 5Plus
     
    Спасибо за участие и помощь в разборе завалов @Andrey Efimov
     
  14. Like
    Ingalime отреагировална Евгений Корепов в Прочитать DNS запрос в idUDPServer   
    Все правильно получаете, кодировка тут не при чем. Согласно спецификации "DNS Packet Structure", вы получаете не строку, а пакет который нужно разобрать. К примеру если запрос будет "nslookup www.google.ru 127.0.0.1", то там где вы получаете имя хоста будет строка "''#3'www'#6'google'#2'ru'#0#0#1#0#1".
    Парсинг простейший:
    #3 - означает что далее идут 3 символа хоста 'www' - вот ожидаемые 3 символа #6 - далее идут еще 6 символов хоста 'google' - ага, вот они #2 - ну и еще 2 символа 'ru' - ура, они здесь #0 - конец имени хоста, складываем в кучу, перемежая точками и получаем www.google.ru #0 - дальше у нас служебная информация... #1 #0 #1 Вот как то так.
    P.S. А зачем вам на таком низком уровне работать? Может использовать IdDNSServer : TIdDNSServer ?
    P.P.S. Правильно Memo1.Lines.Add(BytesToString(AData,12)); //(12, а не 13)
  15. Like
    Ingalime отреагировална Brovin Yaroslav в Android 64 ошибка "External exception 1."   
    В общем исправление проблемы простое:
    Добавляете в свой проект файл FMX.Helpers.Android.pas. Находите там строчку:   FTimerHandle: Cardinal; Меняете ее на: FTimerHandle: TFmxHandle; Собираете и проблемы больше нет.
  16. Like
    Ingalime отреагировална CyberStorm в Android 64 ошибка "External exception 1."   
    Это вроде признанная(непризнанная) ошибка последней версии, тема на офф. форуме: https://community.idera.com/developer-tools/platforms/f/android-platform/70741/inapppurchase
    У себя пока сделал так (можно купить возможность убрать рекламу):
       try
        form1.InAppPurchase1.ApplicationLicenseKey:=key;
        form1.InAppPurchase1.ProductIDs.Add('no_banner');
        form1.InAppPurchase1.SetupInAppPurchase;
        form1.InAppPurchase1.QueryProducts;
        except
        form1.BannerAd1.Visible:=false;
        end;
    end;
    тобишь в 32битных приложениях все работает, а в 64битных пока нету рекламы  и нет дохода  
    Вообщем очень обидно, и когда ждать патча - неизвестно(((
     
  17. Like
    Ingalime отреагировална aleksandrguru в Java Servecie   
    Да был вроде , раньше так делал 
    procedure THomeForm.FormShow(Sender: TObject); var {$IFDEF ANDROID} Intent: JIntent; {$ENDIF } c:Integer; begin Loadsetinngs; {$IFDEF ANDROID} FServiceConnection1 := TLocalServiceConnection.Create; FServiceConnection1.StartService('RecordService'); Intent := CreateIntent(SERVICE_NAME, 1, st); // запускаем историю TAndroidHelper.Activity.startService(Intent); // // запускаем историю Intent := CreateIntent(SERVICE_NAME, 2, st); // запускаем топ TAndroidHelper.Activity.startService(Intent); // // запускаем топ {$ENDIF } end; Запускал разные задачи в сервисе 
  18. Like
    Ingalime отреагировална #WAMACO в Проблема с выделением текста в Edit, Memo при использовании StyleBook в Android   
    Использовать правильные стили. Ошибка в самом стиле.
  19. Like
    Ingalime отреагировална Dmitry_4501 в BlurBehind Control   
    BlurBehind Control. 
     
    Компонент позволяет использовать размытие, по типу, которое реализовано в WIndows 10, т.е компонент позволяет "размыть" то, что находится под ним.
     
    Пусть и увидел это непосредственно в самой студии на стартовой странице (Welcome Page), но все-таки подумал скинуть ссылку сюда.

    Исходники: https://github.com/grijjy/CodeRage2019/tree/master/BlurBehind
    Видео:

     
  20. Like
    Ingalime отреагировална Andrey Efimov в Почему в RecordCount не все строки таблицы?   
    Ознакомьтесь с FireDAC.Stan.Option.TFDFetchOptions.RecordCountMode.
    И начните уже пользоваться поиском на форуме... Не один раз обсуждалась эта тема Показаны результаты для 'RecordCount'
     
    p.s. Тему перенёс в подходящий раздел.
  21. Like
    Ingalime отреагировална #WAMACO в Анимация переходов   
    TFrameStand и TFormStand
    https://github.com/andrea-magni/TFrameStand
  22. Like
    Ingalime отреагировална Losev Andrei в Деплой приложения на iOS (Delphi 10.3.3 в связке с macOS Catalina)   
    Проблема была в правах доступа на МАКе. Выяснилось случайно, когда попробовал делоить тот же проект под МАК и IDE выдала явную ошибку о невозможности создать файл во вложенной в /Users/macuser/PAServer директории. Вылечилось раздачей прав Read & Wtite для ролей staff/everyone для папки PAServer и вложенных директорий (Apply to enclosed items).
    На quality.embarcadero.com есть по крайней мере две заявки на эту тему, почему-то закрытые: RSP-25526 и RSP-26093
    В первой автор откатился на Mojave, во второй стоит «Resolution: Cannot Reproduce». Так что описанная проблема спорадический возникает.
    Всем успехов и поменьше граблей на пустом месте :)
  23. Like
    Ingalime отреагировална Barbanel в Модальное окно логина небольшого размера   
    Ну здаров, сталкер!
    Это нормально для мобильных платформ.
    Чтобы это обойти придется кидать на Form1 прямоугольник (TRectangle емнип) и присваивать ему полупрозрачную заливку. Соост в центр твоего ректангла кидаешь еще одну непрозрачную панель и уже на ней размещаешь свои контролы.
    100%-го аналога ShowModal не получишь, придется логику чуть-чуть поправить.
     
    Скорее всего это масштабирование для конкретно твоего устройства, усугубленное тем что ты не используешь Align или Anchors. Используй их и будет тебе счастье.
    Можно еще почитать про масштабирование чтобы лучше понимать что конкретно происходит.
     
    Не сталкивался с таким, не могу сказать. Возможно баг самой FMX, возможно баг в файле стиля (даже не баг, а внутренняя область гроупбокса неправильно описана). Я бы начал проверку со стиля.
    Есть костыльное решение - установи Margins.Top побольше))))))
  24. Like
    Ingalime отреагировална dnekrasov в Unable to create process   
    http://docwiki.embarcadero.com/RADStudio/Rio/en/MacOS_Notarization
    Делал как здесь описано - всё получилось.
  25. Like
    Ingalime отреагировална Vitaldj в Unable to create process   
    А как ты собрался деплоить на iOs без сертификата? Создавал серт? Дельфи видит PAserver? SDK забрасываются в дельфи?
×
×
  • Создать...