Hallo!
Ich muss an ein
Com-Objekt einen Pointer auf Daten übergeben.
Delphi macht aus der Definition aber immer einen var-Pointer, in der TLB scheint es richtig zu sein.
Wenn ich ein
Com-Interface definiere und einen Parameter mit "void *" angeben und die erzeugte
DLL mit einem TLB-Viewer anschau sehe ich:
Delphi-Quellcode:
HRESULT WriteData(
[in] long SampleNum,
[in] void* PData);
Das scheint also zu passen. Wenn ich in den Delphi-Settings von IDL auf Pascal umschalte, sehe ich "Pointer" - passt also. (Aber eintippen kann ich "Pointer" so nicht, das verweigert der TypeLib-Editor).
In der ..._TLB.pas Datei steht an solchen Stellen dann aber immer
var PData: Pointer
Das "var" ist da falsch. Das ist ja ein Pointer auf einen Pointer, ist dann aber nicht in der Variable drin.
Da müsste korrekterweise stehen:
procedure WriteData(MyNumber: Integer; MyPointer: Pointer); safecall;
Wie krieg ich das am besten hin? Einen anderen Datentypen wie z.B. integer nehmen und casten find ich unintuitiv (wenn man die Interface-Definition liest und ich sehe "PData : integer" wüsste ich nicht auf Anhieb was da zu tun ist).
Gibt's vernünftig unterstützte
COM-Pointertypen?
Danke.