Einzelnen Beitrag anzeigen

derMischa

Registriert seit: 7. Aug 2009
5 Beiträge
 
#3

Re: Zugriffsverletzung nachdem eine Variable deklariert wurd

  Alt 7. Aug 2009, 14:01
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
  Mit Zitat antworten Zitat