Thema: Delphi DLL Funktionsaufruf

Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

DLL Funktionsaufruf

  Alt 17. Aug 2007, 15:24
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."
  Mit Zitat antworten Zitat