Einzelnen Beitrag anzeigen

Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#1

COM-Objekt und Pointer-Type

  Alt 22. Apr 2008, 12:59
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.
  Mit Zitat antworten Zitat