Wo kann ich die nachschlagen?
Für MS APIs/Interfaces, kannst du in der eigentlich als erste Anlaufstelle immer das
MSDN konsultieren. Meistens hast du für die C-Typen in Delphi einen gleichnamigen Typ.
LONG
ist auch tatsächlich gleich
Integer
, bloß hast du den Zeiger unterschlagen. Mach mal ein
@
vor die ersten 3 Parameter, dann sollte es ohne weitere Änderungen kompilieren.
Delphi-Quellcode:
var
hr: HResult;
iEventCode: integer;
{$IF CompilerVersion < 25}
iParam1, iParam2: integer;
{$ELSE}
iParam1, iParam2: LONG_PTR;
{$LEGACYIFEND ON}
{$IFEND}
Ich arbeite mit dem Kram jetzt schon 3 Monate es ist definitiv LONG_PTR;
Delphi-Quellcode:
{$HPPEMIT 'typedef System::DelphiInterface<IMediaEvent> _di_IMediaEvent;'}
{$EXTERNALSYM IMediaEvent}
IMediaEvent = interface(IDispatch)
['{56A868B6-0AD4-11CE-B03A-0020AF0BA770}']
(*** IMediaEvent methods ***)
function GetEventHandle(out hEvent: OAEVENT): HResult; stdcall;
function GetEvent(out lEventCode: Longint; out lParam1, lParam2: Long_ptr;
msTimeout: DWORD): HResult; stdcall;
function WaitForCompletion(msTimeout: DWORD; out pEvCode: Longint):
HResult; stdcall;
function CancelDefaultHandling(lEvCode: Longint): HResult; stdcall;
function RestoreDefaultHandling(lEvCode: Longint): HResult; stdcall;
function FreeEventParams(lEvCode: Longint; lParam1, lParam2: Longint):
HResult; stdcall;
end;
gruss