![]() |
Java2Pas für FMX / Android
Liste der Anhänge anzeigen (Anzahl: 1)
Java2Pas ist ein Konverter um Delphi .pas Sourcen aus Android .class oder .jar Dateien zu erstellen. Dies erleichtert die Tipparbeit bei der Integration neuer Klassen in das FMX-Framework ganz erheblich.
Dies ist eine kostenlose Version für Mitglieder der DelphiPraxis. Aufruf: Java2Pas <.class|.jar> [outputpath] Erzeugt .pas Units aus .class Dateien oder aus allen .class Dateien innerhalb einer .jar Datei und schreibt diese im aktuellen Verzeichnis, oder in das durch den Parameter outputpath angegebene. Informationen über die Analyse der Java-Klassen werden in die Standardausgabe geschrieben und können umgeleitet werden. Es werden auch Konstanten für konstante Properties angelegt, somit kann man evtl. etwas Laufzeit sparen da man die Getter nicht aufrufen muss und in einigen Fällen nicht einmal die Klasse instantiieren. Die uses werden für bekannte FMX units sowie für benötige importierte Java-Klassen automatisch erstellt. Die Java-Signaturen (Format (ParamTyp1[;][..ParamTypn[;]])ReturnTyp ) und Zugriffs-Flags (A: $<Hexwert>) werden als Kommentar integriert, so dass man evtl. vorhandene Fehler leicht selber beheben kann. Einschränkungen: Erzeugt nur komplette Implementation für JObject Interfaces von Klassen aus dem android/ Namespace. Die JObjectClass Implementation ist aber immer vollständig. Uses (besonders zirkuläre Referenzen) sowie Definitionen von Abstrakten Interface-Definitionen und auch einige reservierte Symbolnamen müssen bei Bedarf angepaßt werden. Beispielausgabe für android.app.AlarmManager.class:
Delphi-Quellcode:
//
// Generated by JavaToPas 20142503 - 225052 //////////////////////////////////////////////////////////////////////////////// unit android.app.AlarmManager; interface uses AndroidAPI.JNIBridge, Androidapi.JNI.JavaTypes, android.app.PendingIntent; type JAlarmManager = interface; JAlarmManagerClass = interface(JObjectClass) ['{A87F06C0-7AAC-4594-A68E-6BEBE7BB69C8}'] function _GetELAPSED_REALTIME : Integer; cdecl; // A: $19 function _GetELAPSED_REALTIME_WAKEUP : Integer; cdecl; // A: $19 function _GetINTERVAL_DAY : Int64; cdecl; // A: $19 function _GetINTERVAL_FIFTEEN_MINUTES : Int64; cdecl; // A: $19 function _GetINTERVAL_HALF_DAY : Int64; cdecl; // A: $19 function _GetINTERVAL_HALF_HOUR : Int64; cdecl; // A: $19 function _GetINTERVAL_HOUR : Int64; cdecl; // A: $19 function _GetRTC : Integer; cdecl; // A: $19 function _GetRTC_WAKEUP : Integer; cdecl; // A: $19 procedure &set(&type : Integer; triggerAtMillis : Int64; operation : JPendingIntent) ; cdecl;// (IJLandroid/app/PendingIntent;)V A: $1 procedure cancel(operation : JPendingIntent) ; cdecl; // (Landroid/app/PendingIntent;)V A: $1 procedure setInexactRepeating(&type : Integer; triggerAtMillis : Int64; intervalMillis : Int64; operation : JPendingIntent) ; cdecl;// (IJJLandroid/app/PendingIntent;)V A: $1 procedure setRepeating(&type : Integer; triggerAtMillis : Int64; intervalMillis : Int64; operation : JPendingIntent) ; cdecl;// (IJJLandroid/app/PendingIntent;)V A: $1 procedure setTime(millis : Int64) ; cdecl; // (J)V A: $1 procedure setTimeZone(timeZone : JString) ; cdecl; // (Ljava/lang/String;)V A: $1 property ELAPSED_REALTIME : Integer read _GetELAPSED_REALTIME; // I A: $19 property ELAPSED_REALTIME_WAKEUP : Integer read _GetELAPSED_REALTIME_WAKEUP;// I A: $19 property INTERVAL_DAY : Int64 read _GetINTERVAL_DAY; // J A: $19 property INTERVAL_FIFTEEN_MINUTES : Int64 read _GetINTERVAL_FIFTEEN_MINUTES;// J A: $19 property INTERVAL_HALF_DAY : Int64 read _GetINTERVAL_HALF_DAY; // J A: $19 property INTERVAL_HALF_HOUR : Int64 read _GetINTERVAL_HALF_HOUR; // J A: $19 property INTERVAL_HOUR : Int64 read _GetINTERVAL_HOUR; // J A: $19 property RTC : Integer read _GetRTC; // I A: $19 property RTC_WAKEUP : Integer read _GetRTC_WAKEUP; // I A: $19 end; [JavaSignature('android/app/AlarmManager')] JAlarmManager = interface(JObject) ['{51B4D906-1804-4540-B40B-75F650A76293}'] procedure &set(&type : Integer; triggerAtMillis : Int64; operation : JPendingIntent) ; cdecl;// (IJLandroid/app/PendingIntent;)V A: $1 procedure cancel(operation : JPendingIntent) ; cdecl; // (Landroid/app/PendingIntent;)V A: $1 procedure setInexactRepeating(&type : Integer; triggerAtMillis : Int64; intervalMillis : Int64; operation : JPendingIntent) ; cdecl;// (IJJLandroid/app/PendingIntent;)V A: $1 procedure setRepeating(&type : Integer; triggerAtMillis : Int64; intervalMillis : Int64; operation : JPendingIntent) ; cdecl;// (IJJLandroid/app/PendingIntent;)V A: $1 procedure setTime(millis : Int64) ; cdecl; // (J)V A: $1 procedure setTimeZone(timeZone : JString) ; cdecl; // (Ljava/lang/String;)V A: $1 end; TJAlarmManager = class(TJavaGenericImport<JAlarmManagerClass, JAlarmManager>) end; const TJAlarmManagerRTC_WAKEUP = 0; TJAlarmManagerRTC = 1; TJAlarmManagerELAPSED_REALTIME_WAKEUP = 2; TJAlarmManagerELAPSED_REALTIME = 3; TJAlarmManagerINTERVAL_FIFTEEN_MINUTES = 900000; TJAlarmManagerINTERVAL_HALF_HOUR = 1800000; TJAlarmManagerINTERVAL_HOUR = 3600000; TJAlarmManagerINTERVAL_HALF_DAY = 43200000; TJAlarmManagerINTERVAL_DAY = 86400000; implementation end. |
AW: Java2Pas für FMX / Android
Kann ich nur empfehlen, ich habe damit schon ein paar Sachen übersetzt und in echten Apps integriert!
|
AW: Java2Pas für FMX / Android
Inzwischen gibt es auch einen
![]() |
AW: Java2Pas für FMX / Android
Funktioniert das ganze eigentlich nur für FMX und Android oder auch für "normales" Java und VCL?
|
AW: Java2Pas für FMX / Android
Theoretisch könnte das gehen. Es wird ja nichts FMX-spezifisches bzw. visuelles gemacht. Allerdings wird die AndroidAPI.JNIBrigde verwendet. Eine etwas ältere Methode (2002) die allgmeiner ist kann man
![]() |
AW: Java2Pas für FMX / Android
Hallo,
wollte für WIN 32 ein .class mit JavatoPas nutzen. Übersetzen geht, doch kommt da AndroidAPI in der USES vor. Und da meint Delphi dass es nicht fir win32 paßt`? Was macht man da? DANKE walter |
AW: Java2Pas für FMX / Android
Du kannst Java Klassen aus Android nicht unter Windows nutzen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz