Einzelnen Beitrag anzeigen

jensw_2000
(Gast)

n/a Beiträge
 
#1

COM Typenbibliothek - dispinterface und Records

  Alt 3. Okt 2007, 02:13
Ich habe eine ActiveX Bibliothek mit einem Automatisierungs-Objekt angelegt.
In der Typenbibliothek habe ich unter Anderem einige Enum-Typen und einige Records deklariert.

Die Records werden in der _TLB in den "dispinterface Deklarationen" nicht erkannt, und durch OleVariant ersetzt.
Bei den IDiapatch Deklarationen klappt das mit den Records.

Im Typenbibliotheks-Editor sieht noch alles richtig aus ...
Delphi-Quellcode:
IPDDAPIaxEvents = dispinterface
  [ uuid '{12345678-A8C6-44CE-BFF9-F5257644C83D}',
    version 1.0,
    helpstring 'Ereignis-Schnittstelle für PDDAPIax-Objekt' ]
  procedure OnErrorInfo(var aErrorInfo: TRecErrorInfo) [dispid $000000CE]; stdcall;
end;
... in der _TLB steht die Deklaration nachher falsch drin ...
procedure OnErrorInfo(var aErrorInfo: {??TRecErrorInfo}OleVariant); dispid 206;
TRecErrorInfo enthält einen Enum.Typen, einen Integer und einen WideString
Delphi-Quellcode:
TErrorSource = (
  [ uuid '{12345678-9482-4133-8FF8-3442B2D34AE2}',
    version 1.0 ]
  esApplication = 1;
  esPDDAPI = 2;
  esNetwork = 3;
  esServer = 4;
);

TRecErrorInfo = record
  [ uuid '{12345678-DE0C-48AA-94FE-2855D7D9942B}',
    version 1.0 ]
  ErrorSource: TErrorSource;
  ErrorID: Integer;
  ErrorText: WideString;
end;
Wie übergebe ich Records an ein EventObjekt bzw. an das dispinterface ?
Kann mit jemand stichpunktartig die Hintergründe erläutern ?

Danke,
schönen Feiertag,
Jens
  Mit Zitat antworten Zitat