
Slym
Пользователи-
Постов
141 -
Зарегистрирован
-
Посещение
-
Победитель дней
31
Slym стал победителем дня 11 апреля
Slym имел наиболее популярный контент!
Посетители профиля
11 223 просмотра профиля
Достижения Slym
-
К счетчику Гейгера...? Что за девайс? Nokia ww3 edition?
-
BenTen отреагировал на ответ на вопрос: MSPOS - смарт-терминалы от компании Мультисофт
-
Andrey Efimov отреагировал на ответ на вопрос: MSPOS - смарт-терминалы от компании Мультисофт
-
multisoft.zip Проект jar файла, aidl+ exceptioncallback
- 3 ответа
-
- mspos
- ifiscalcore
-
(и ещё 2 )
C тегом:
-
Andrey Efimov отреагировал на вопрос: Линковка Kotlin (Котлин) библиотек в Delphi
-
ищи по тексту --min-sdk-version или делай дешугаринг либе
-
Roman F отреагировал на вопрос: Линковка Kotlin (Котлин) библиотек в Delphi
-
Roman F отреагировал на ответ на вопрос: Линковка Kotlin (Котлин) библиотек в Delphi
-
Ingalime отреагировал на вопрос: Линковка Kotlin (Котлин) библиотек в Delphi
-
qz5 отреагировал на ответ на вопрос: Линковка Kotlin (Котлин) библиотек в Delphi
-
qz5 отреагировал на вопрос: Линковка Kotlin (Котлин) библиотек в Delphi
-
Линковка Kotlin (Котлин) библиотек в Delphi, как делаю: Хедеры линкуемых библиотек обычно громадны описанием всех типов... Я обычно делаю свой jar на java в нем линкую зависимости и наружу для дельфи оставляю один объект с простыми функциями. Хедер дельфи получается компактным и понятным: package com.MyCompany.evotor; public interface J2DCallback { void Log(String str); String Trans(String str); String GetValue(String name); void SetValue(String name, String value); Activity GetActivity(); Context GetContext(); } public class FiscalCoreConnection { final private Global Instance; public FiscalCoreConnection(J2DCallback aj2d) throws NullPointerException { Instance = new Global(aj2d); } public String SendJSON(String JSON){ try{ return Instance.SendJson(JSON); } catch (Exception e) { return FiscalCoreException.MakeJson(e); } } } type J2DCallbackClass = interface(IJavaClass) ['{856654D5-7939-44DF-ACD5-E2EF8C6D3AA4}'] end; [JavaSignature('com/MyCompany/evotor/J2DCallback')] J2DCallbackIntf = interface(IJavaInstance) ['{025B14E9-C041-4105-9E85-83CC127CC340}'] procedure Log(str:JString); cdecl; function Trans(str:JString):JString; cdecl; function GetValue(name:JString):JString; cdecl; procedure SetValue(name:JString; value:JString); cdecl; function GetActivity():JActivity; cdecl; function GetContext():JContext; cdecl; end; TJ2DCallbackImp = class(TJavaGenericImport<J2DCallbackClass, J2DCallbackIntf>) end; [JavaSignature('com/MyCompany/evotor/FiscalCoreConnection')] JFiscalCoreConnection = interface(JObject) ['{5797747D-D61D-4EF6-94F7-5E8994545CC2}'] function SendJSON(JSON:JString):JString; cdecl; end; JFiscalCoreConnectionClass = interface(JObjectClass) ['{81782882-DFCF-4FA9-BD37-02CCCF2409EA}'] function init(j2d : J2DCallbackIntf) : JFiscalCoreConnection; cdecl; end; TJFiscalCoreConnection = class(TJavaGenericImport<JFiscalCoreConnectionClass, JFiscalCoreConnection>) end; TJ2DCallback = class(TJavaLocal, J2DCallbackIntf) public procedure Log(str:JString); cdecl; function Trans(str:JString):JString; cdecl; function GetValue(name:JString):JString; cdecl; procedure SetValue(name:JString; value:JString); cdecl; function GetActivity():JActivity; cdecl; function GetContext():JContext; cdecl; end; Все зависимости в build.gradle: dependencies { implementation 'com.github.evotor:integration-library:v0.4.50' implementation 'com.google.zxing:core:3.4.0' } В Дереве External Libraries забираем jarы зависимостей ПКМ Show in Explorer. Копируем в папку своего проекта и даем осознанное имя. Там же забираем kotlin-stdlib ПКМ Show in Explorer. Копируем в папку своего проекта и даем осознанное имя. Но в kotlin-stdlib.jar есть "лишний" файл kotlin-stdlib-1.5.10.jar\META-INF\versions\9\module-info.class Открываем архиватором и удаляем файл или всю папку versions Почти все готово... Но котлин еще и посыпан сахаром и не хочет Дельфей dexится, хочет -min-sdk-version=26 Поможем Delphi: Ищем CodeGear.Common.Targets, у меня он в "C:\Program Files (x86)\Embarcadero\Studio\21.0\bin"\ Ищем в нем --output, и перед ним вставим все про sdk. У меня получилось так: <DxCmd>PATH $(JDKPath)\bin;$(PATH); %26 set JAVA_HOME=$(JDKPath)%26 "$(JavaDxPath)" --dex --min-sdk-version=26 --output=</DxCmd> Далее цепляем все jar в проект Либа производителя, Либа своя обертка, и котлин Иии собираем! Если есть еще зависимости делаем аналогично: находим jar, выпиливаем META-INF\versions\9\module-info.class, линкуем в проект и собираем... Не все зависимости используются и нужны, поэтому добавляем поштучно до тех пор пока не заведется.
-
krapotkin отреагировал на ответ на вопрос: Как перевести данные из TStrings в TMemoryStream?
-
Вангую: потом будет вопрос как понять что весь stream прилетел а не его некоторая часть...
- 12 ответов
-
- delphi 10.3.3
- delphi
-
(и ещё 2 )
C тегом:
-
Ingalime отреагировал на ответ на вопрос: Intent Delphi->1C
-
Алекс Иванов подписался на Slym
-
Не пробовал... может так? вместо form1.close пишем TAndroidHelper.Activity.setResult(RESULT_OK, Intent); TAndroidHelper.Activity.Finish;
-
билять гоню... это защита от onClick MouseUp/Down имхо никак
-
билять гоню... это защита от onClick MouseUp/Down имхо никак
-
тогда сначала так, без проверки парента //if TOpenCustomScrollBox(Sender).ContainsObject(ICtrl.GetObject) then закоментируй иф... так понятней?: procedure TScrollBoxService.OnViewportPositionChange(Sender: TObject; const OldViewportPosition, NewViewportPosition: TPointF; const ContentSizeChanged: Boolean); var ICtrl:IControl; begin ICtrl:=TControl(Sender).Root.Captured; if not assigned(ICtrl) then begin ICtrl:=TControl(Sender).Root.Focused; if not assigned(ICtrl) then exit; end; ICtrl.MouseUp(TMouseButton.mbLeft,[],0,0); ICtrl.DoMouseLeave; end;
-
атак? if TOpenCustomScrollBox(Sender).ContainsObject(ICtrl.GetObject) then
-
procedure SyncProc(Proc:TProc<TLightweightEvent>); var Event:TLightweightEvent; begin Event:=TLightweightEvent.Create; try Proc(Event); Event.WaitFor(); finally Event.Free; end; end; function MessageDialogSync(const AMessage: string; const ADialogType: TMsgDlgType; const AButtons: TMsgDlgButtons; const ADefaultButton: TMsgDlgBtn; const AHelpCtx: THelpContext): TModalResult; var LocalResult: TModalResult; begin SyncProc( procedure(Event:TLightweightEvent) begin TThread.Synchronize(nil, procedure begin TDialogServiceAsync.MessageDialog(AMessage, ADialogType, AButtons, ADefaultButton, AHelpCtx, procedure(const AResult: TModalResult) begin LocalResult:=AResult; Event.SetEvent; end); end); end); result:=LocalResult; end; procedure TForm3.Button1Click(Sender: TObject); begin TThread.CreateAnonymousThread( procedure begin while not TThread.CheckTerminated do begin TThread.Sleep(1000); if MessageDialogSync('Продолжать?', TMsgDlgType.mtInformation,[TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo],TMsgDlgBtn.mbYes,0)<>idYes then TThread.CurrentThread.Terminate; end; end).Start; end; поток тормозится до исполнения диалога... диалог показывается в главном потоке
-
type TOpenCustomScrollBox=class(TCustomScrollBox); procedure TScrollBoxService.OnViewportPositionChange(Sender: TObject; const OldViewportPosition, NewViewportPosition: TPointF; const ContentSizeChanged: Boolean); var ICtrl:IControl; begin ICtrl:=TControl(Sender).Root.Captured; if not assigned(ICtrl) then begin ICtrl:=TControl(Sender).Root.Focused; if not assigned(ICtrl) then exit; end; if TOpenCustomScrollBox(Sender).Content.ContainsObject(ICtrl.GetObject) then begin ICtrl.MouseUp(TMouseButton.mbLeft,[],0,0); ICtrl.DoMouseLeave; end; end;
-
Собственно - это только IOS Все там есть. см iOSapi.CoreLocation.pas