Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#49

Re: Delphi mit Java komunizieren

  Alt 6. Sep 2006, 13:51
Ein Problem ist jetzt doch noch aufgetaucht: Wie muss ich eine Methode aufrufen, die einen String zurückgibt?

Ich habe es so probiert:
Delphi-Quellcode:
procedure TForm1.btnStrTestClick(Sender: TObject);
var
  cls : JClass;
  mid : JMethodID;
  result : JString;
  instance : JObject;
begin
  cls := self.jvm.JniEnv.FindClass('HelloWorld');
  Assert(Assigned(cls), 'Class HelloWorld not found');

  mid := self.jvm.JniEnv.GetMethodID(cls, '<init>', '()V');
  Assert(Assigned(mid), 'Constructor not found');

  instance := self.jvm.JniEnv.NewObject(cls, mid, []);
  mid := self.jvm.JniEnv.GetMethodID(cls, 'strTest', '()Ljava/lang/String');
  Assert(Assigned(mid), 'Method "strTest" not found');

  result := self.jvm.JniEnv.CallObjectMethod(instance, mid, []);
  ShowMessage('Result = ' + String(result));
end;
Aber da findet er die Methode nicht:
Code:
    public String strTest()
    {
       return "Hello, world";
    }
Hat sich auch erledigt. Sio geht es:
Delphi-Quellcode:
mid := self.jvm.JniEnv.GetMethodID(cls, 'strTest', '()Ljava/lang/String;');
  Assert(Assigned(mid), 'Method "strTest" not found');

  result := self.jvm.JniEnv.CallObjectMethod(instance, mid, []);
  ShowMessage('Result = ' + jvm.JniEnv.JStringToString(result));
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat