Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#56

Re: Delphi mit Java komunizieren

  Alt 18. Okt 2006, 15:01
Zitat von Simon1988:
Ich hab hier maln quelltext Form1.MiniSC.MBMap.obj ist hierbei das objekt der Klasse MBMap , dass ich schon erzeugt habe ..
Delphi-Quellcode:
 Obj := jvm.JniEnv.NewObject(cls, ConstructorMid, [Form1.MiniSC.MBMap.Obj]);
 if Obj = nil then
  ShowMessage('Fehler beim erzeugen der Instanz');
Wenn ich haber die funktion newObject aufruf kommt ein fehler .. und zwar folgender :
"im Projekt SC.ece ist eine Exception der Klasse EAccressViolation mit der Meldung"zugriffsverletzung bei Adresse 0047ßb74 in Modul "SC.exe". Lesen von adresse 00000004" aufgetreten"
ist meine übergabe [Form1.MiniSC.MBMap.Obj]); überhaupt richtig ?! .. oder übergeb ich da was anderes als das Objekt (Der klasse JObject)
Du sagst, du hast schon eine Instanz von MBMap, was genau ist denn MBMap? Ist das eine Delphi Klasse? Oder hast du hier ein Java-Objekt? Da musst du dann wirklich aufpassen, denn sonst treffen hier zwei völlig verschiedene Welten aufeinander.
Delphi Klassen und Java Klassen haben aus sicht des Programms nichts mit einander gemeinsam! Eine Delphi Klasse wird völlig anders initialisiert und auch völlig anders im Speicher gehalten. Den großen unterschied siehst du schon daran, dass du bei Java Reflections anwenden kannst, für Delphi ist nichts (komplett) gleichwertiges vorhanden. Das heißt, dass die JVM also schon andere Informationen als ein RTTI haben muss.
Würdest du jetzt ein Delphi-Objekt als Instanz einer Java-Klasse weiter reichen, dann verstehe ich, dass es kracht! Die JVM würde nun eine Referenz auf ein Objekt bekommen. Um die korrekte Übergabe des Speichers kümmert sich dann schon die Kapselung (JNI), aber der Versuch diese Referenz als Java Klasse zu verwenden muss fehlschlagen.

Die Frage wäre also, wie hast du Form1.MiniSC.MBMap.obj erzeugt?

Gruß Der Unwissende
  Mit Zitat antworten Zitat