AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Java2Pas für FMX / Android
Thema durchsuchen
Ansicht
Themen-Optionen

Java2Pas für FMX / Android

Ein Thema von Union · begonnen am 1. Apr 2014 · letzter Beitrag vom 8. Apr 2017
 
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#1

Java2Pas für FMX / Android

  Alt 1. Apr 2014, 11:46
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.
Angehängte Dateien
Dateityp: zip Java2Pas140.zip (299,8 KB, 235x aufgerufen)
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all

Geändert von Union ( 8. Mai 2014 um 10:11 Uhr) Grund: Version 1.4.0
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:22 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