Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Methode aus einer .NET Assembly über MethodAddress aufrufen (https://www.delphipraxis.net/183710-methode-aus-einer-net-assembly-ueber-methodaddress-aufrufen.html)

Mossi 30. Jan 2015 11:49

Delphi-Version: 7

Methode aus einer .NET Assembly über MethodAddress aufrufen
 
Hallo zusammen,

ich versuche gerade, dass ich Methoden in einer .NET Assembly mit ihrem Namen als String aufrufe. Aber irgendwie liefert dabei MethodAddress immer nil zurück. Dabei hab ist sowohl die Klasse als auch der Methoden-name dynamisch.
kann es sein, dass das bei ComVisible Assemblies nicht funktioniert?

Der Quellcode schaut grob so aus:
Delphi-Quellcode:
type
  TProcedure = procedure of object;

...

procedure CallMethod(classObj: TPersistentClass; methodName: string);
var
  obj: TObject
  routine: TMethod;
begin
  RegisterClass(classObj);
  obj := TClass(classObj).Create;
  if obj <> nil then
  begin
    routine.Data := Pointer(obj);
    routine.Code := obj.MethodAddress(methodName);
    TProcedure(routine);
  end;
end;
Gurndsätzlich ist es so, dass das Objekt noch erzeugt wird, aber eben obj.methodAddress liefert dann nil zurück und dadurch kann die Methode natürlich auch nicht aufgerufen werden.
vielleicht hat jemand eine Idee, an was das liegen könnte, oder wie man das sonst umsetzen könnte.

Dejan Vu 30. Jan 2015 11:53

AW: Methode aus einer .NET Assembly über MethodAddress aufrufen
 
Redest Du von einem COM-Objekt oder einer .NET-Assembly?`
COM-Objekte sollten klappen, bei .NET-Assemblies legst Du dir die Karten.

Mossi 30. Jan 2015 11:57

AW: Methode aus einer .NET Assembly über MethodAddress aufrufen
 
Es handelt sich um eine .NET 4 Assembly, mit comvisible Klassen, die mit regasm registriert wurde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz