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

Евгений Деревянкин

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

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

  • Посещение

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

    1

Евгений Деревянкин стал победителем дня 16 октября

Евгений Деревянкин имел наиболее популярный контент!

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

Достижения Евгений Деревянкин

  1. все нормально, classes.dex собрал, файл классов использовал из папки Android\Debug\Project1.classes\, пока полет нормальный https://docwiki.embarcadero.com/RADStudio/Sydney/en/Creating_and_Deploying_a_classes.dex_File_Manually извиняюсь в deployment файл классов также подключен как и раньше, отображение прозрачное какое то и я его не заметил
  2. Доброго времени суток! Решился перейти на Delphi 11 Alexandria, и увидел одну особенность, в директории Delphi нет файла classes.dex, также его теперь нет в Deployment а еще после компиляции появилась директория Android\Debug\Project1.classes\ , и вот теперь не понимаю как собрать мне новый файл classes.dex для моего проекта.
  3. Добрый день! помогите с решением, нужен модуль с формой который будет работать на FMX и VCL. Был сделан выбор на использование библиотек DLL. В библиотеке находится TForm и TDataModule. На форме отображается данные из выполненного запроса, добавление, редактирование, удаление записей. Во время вызова формы в DLL передаем строку подключения и подключаемся к БД. на Windows все прекрасно работает, библиотека вызывается на FMX и VCL, из dll отображается форма и загружает данные из БД, все работает. Но есть проблема когда я собираю эту же библиотеку на Android во время создания формы или фрейма вылетает AV. Даже просто вызываю из DLL функцию Showmessage на Android получаю AV. Пробовал передать в библиотеку TAndroidHelper.Context и вызвать из нее TJToast и все равно AV. Обычные функции с возвращение какого либо значения прекрасно работают, а как доходит дело работы с интерфейсом тут же получаю AV. Подскажите есть ли возможность заставить все это работать на Android. Было бы прекрасно использовать одну библиотеку в разных проектах. Заранее Спасибо! library Lib; uses System.SysUtils, System.Classes, Fmx.Types, FMX.Dialogs, Un_dm in 'lib\Un_dm.pas' {dm: TDataModule}, Un_FormFMX in 'lib\Un_FormFMX.pas' {FormFMX}, Un_FrameFMX in 'lib\Un_FrameFMX.pas' {FrameFMX: TFrame}; {$R *.res} const DLL_PROCESS_ATTACH = 1; DLL_PROCESS_DETACH = 0; procedure DLLMain(dwReason: integer); begin case dwReason of DLL_PROCESS_ATTACH: begin Dm:=TDm.Create(nil); end; DLL_PROCESS_DETACH: begin FreeAndNil(dm); if assigned(FormFMX) then FreeAndNil(FormFMX); end; end; end; procedure CreateFormFMX(connect:string); begin dm.UniConnection1.ConnectString:=connect; FormFMX:=TFormFMX.Create(nil); FormFMX.Show; end; procedure CreateFrameFMX(AOwner:TComponent;Parent:TFMXObject;connect:string); begin FrameFmx:=TFrameFMX.Create(AOwner); FrameFmx.Parent:=Parent; end; exports CreateFormFMX, CreateFrameFMX; begin DLLProc := @DLLMain; DLLMain(DLL_PROCESS_ATTACH); end. Вызов библиотеки: unit Un_MainFmx; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, FMX.Controls.Presentation, FMX.Edit, FMX.Layouts; type TMain = class(TForm) Layout1: TLayout; Edit1: TEdit; Label1: TLabel; Button1: TButton; Button2: TButton; Panel1: TPanel; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Main: TMain; implementation {$R *.fmx} uses {$IF DEFINED(win32) or DEFINED(win64)} WinApi.Windows, {$ENDIF} System.IOUtils; var LibHandle: THandle; CreateFormFMX: procedure(connect:string); CreateFrameFMX: procedure(AOwner:TComponent;Parent:TFMXObject;connect:string); Function LoadLib(Name:string):THandle; var dll:THandle; Path: string; begin {$IF DEFINED(win32) or DEFINED(win64)} result:= LoadLibrary(PChar(Name+'.dll')); {$ENDIF} {$IF DEFINED(iOS) or DEFINED(ANDROID)} Path := IncludeTrailingPathDelimiter(TPath.GetLibraryPath); result := LoadLibrary(PChar(Path + 'lib' + name + '.so')); {$ENDIF} end; procedure TMain.FormCreate(Sender: TObject); begin LibHandle := LoadLib('Lib'); end; procedure TMain.FormDestroy(Sender: TObject); begin FreeLibrary(LibHandle); end; procedure TMain.Button1Click(Sender: TObject); begin @CreateFormFMX := nil; if LibHandle >= 32 then begin @CreateFormFMX := GetProcAddress(LibHandle,'CreateFormFMX'); if @CreateFormFMX <> nil then begin CreateFormFMX(Edit1.Text); end; end; end; procedure TMain.Button2Click(Sender: TObject); begin @CreateFrameFMX := nil; if LibHandle >= 32 then begin @CreateFrameFMX := GetProcAddress(LibHandle,'CreateFrameFMX'); if @CreateFrameFMX <> nil then begin CreateFrameFMX(panel1,panel1,Edit1.Text); end; end; end; end. Debug.rar Project.rar
  4. Добрый день! Помогите с решением проблемы... имеется терминал оплаты на android, когда отправлю функцию принять оплату картой запускается системное приложение терминала для считывания карты оплаты, производим оплату, системное приложение закрывается и отправляет статус об оплате, но в момент когда оплата проходит мое приложение остается на фоне и андроид его закрывает. Подскажите как мне сделать что бы мое приложение оставалось в памяти и не закрывалось чтобы после оплаты я вернулся к своему приложению обработал ответ от приложения и продолжил работу. флаг persistent не помог. терминал слабенький и возможно из-за нехватки ресурсов android закрывает фоновое приложение
×
×
  • Создать...