Forum: Object-Pascal / Delphi-Language
by SMO,
16. Aug 2015
Ich glaube, du verstehst nicht... das ist ein Kommentar, keine Zuweisung. :P
Bei stdcall landen alle Parameter auf dem Stack, nicht in Registern.
Dieses Codebeispiel ist unvollständig oder funktioniert nicht. Wie gesagt, falls diese "Dispatch" Methode "this" gar nicht braucht, wird es funktionieren, aber das ist nicht der Allgemeinfall.
Forum: Object-Pascal / Delphi-Language
by SMO,
16. Aug 2015
Ich sehe nicht, wie und wo bei diesem Vorgehen das "this" in ecx landet, da stdcall benutzt wird.
Es gibt übrigens durchaus C-Methoden, die das "this" nie benutzen und daher von Delphi aus per stdcall aufgerufen werden können. Aber im allgemeinen Fall geht das nicht und man muss irgendwie dafür sorgen, dass ecx den richtigen Inhalt bekommt.
Forum: Object-Pascal / Delphi-Language
by SMO,
16. Aug 2015
Ist es das? Sehe ich nicht so (stdcall vs. register), aber vielleicht stehe ich gerade auf dem Schlauch.
Danke. :)
Forum: Object-Pascal / Delphi-Language
by SMO,
16. Aug 2015
Ich hatte auch mal damit zu tun und habe es folgendermaßen gelöst:
type
PCppClass = ^TCppClass;
PCppClassVtbl = ^TCppClassVtbl;
TCppClassVtbl = packed record
// These are actually Microsoft "thiscall" convention functions that pass a C++ object reference
// in the ecx register. Delphi doesn't support this calling convention, but in its default
// "register" calling...