Das Problem liegt darin, dass du nicht einen Typ, sondern einen Pointer auf den Typ übergeben bekommst.
Code:
type
TLoadinfo = packed record
mVersion: DWORD;
mHwnd: HWND;
mKeep: BOOL;
end;
PLoadinfo = ^TLoadinfo;
procedure LoadDll(Loadinfo: PLoadinfo); stdcall;
begin
ShowMessage(
'mIRC-Version: ' +
IntToStr(LOWORD(Loadinfo.mVersion)) + '.' +
IntToStr(HiWord(Loadinfo.mVersion))
);
end;
function UnloadDll(mTimeout: Integer): Integer; stdcall;
begin
if (mTimeout = 1) then
Result := 0;
end;