Hi,
Ich rufe eine ganz simple, aus einer
DLL importierte procedure auf. Sie liefert mir (glaube ich) korrekte Daten aber danach bekomme ich eine Zugriffsverletzung.
Delphi-Quellcode:
type
VERSIONINFO = packed record
cbSize: DWORD;
dwMajorVersion: DWORD;
dwMinorVersion: DWORD;
dwBuildNumber: DWORD;
dwPlatformID: DWORD;
end;
PVERSIONINFO = ^VERSIONINFO;
function DllGetVersion(out pdvi: PVERSIONINFO): HRESULT; stdcall; external 'cabinet.dll';
implementation
procedure TForm1.Button1Click(Sender: TObject);
var x: PVERSIONINFO;
begin
New(x);
x^.cbSize := SizeOf(VERSIONINFO);
DLLGetVersion(x);
ShowMessage(IntToStr(x.dwMajorVersion) + '.'+ IntToStr(x.dwMinorVersion));
Dispose(x);
end;
Das Record ist eigentlich 100%ig richtig. Die Version sieht original so aus:
Code:
HRESULT DllGetVersion(DLLVERSIONINFO* pdvi)
Mache ich da was falsch? Mit FreeMem statt Dispose hab ichs auch schon probiert. Oder ich hab den Speicher gar nicht freigegeben aber das nutzt auch nichts -.-
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."