Ich denke, dass da genau das Problem liegt, dass ich da keinen Zeiger sondern ein TData verwendet habe. Das Problem ist, dass diese
DLL in ein anderes Programm eingebunden wird und ich von diesem den Source nicht habe. In der Beispiel-
DLL wird ein Zeiger verwendet. Das ist mir irgendwie nicht bewußt gewesen. Ich habe das jetzt so umgebogen:
Delphi-Quellcode:
type
PData = ^TData;
TData = record
AnzParameter : Integer;
test : Integer; // <= zweite Variable
end;
type
PGesamt=^TGesamt;
TGesamt=packed record
// Hier werden noch weitere Variablen deklariert
DataPtr: PData;
// Hier werden noch weitere Variablen deklariert
end;
Jetzt muss ich natürlich entsprechend Speicher reservieren, was ich dann wie folgt gemacht habe:
Delphi-Quellcode:
procedure InitialisiereDLL(gesamt : PGesamt); export stdcall;
begin
GetMem(gesamt^.DataPtr, SizeOf(TData));
end;
Es folgt eine Zugriffsverletzung beim Schreiben von Adresse 00000000