Mir persönlich ist das zu wenig Quelltext, um da etwas erkennen zu können.
Ich verwende eine Prozedur, die eine Info benötigt, von wem sie aufgerufen wurde. Daher gebe ich dieser die Informationen über
AOwner: TComponent; AParent: TWinControl;
mit, bzw. reiche die durch.
AOwner
scheint auch Informationen zu enthalten;
AParent
scheint aber nil zu sein.
Im MainForm wird ein Konstruktor einer Klasse aufgerufen. Diesem Konstruktor gebe ich die Infos
AOwner: TComponent; AParent: TWinControl;
des Hauptformulars mit.
Innerhalb des Konstruktors der aufgerufenen Klasse in der 2.
Unit wird wiederum der eigentlich Konstruktor der Klasse aufgerufen der die Info über
AOwner: TComponent; AParent: TWinControl;
benötigt. Ich reiche diese also nur durch. In der 3.
Unit meldet der Compiler dann an der Stelle
Parent := AParent;
die Fehlermeldung: "Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000."
In der Haupt-Unit:
Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
begin
//mach was
Daten:=TDaten.Create(MainForm, MainForm, DBTest);
//mach was
end;
In der 2. Unit:
Delphi-Quellcode:
constructor TDaten.Create(Aowner:TComponent; AParent:TWinControl; Datenbank: TdBase);
begin
//mach was
Test1:=TSoftSPS.Create(Aowner, AParent, "irgendein Integer-Wert");
//mach was
end;
In der 3. Unit:
Delphi-Quellcode:
constructor TSoftSPS.Create(AOwner: TComponent; AParent: TWinControl; VarGroesse: Integer);
begin
Parent := AParent; //hier tritt der Fehler auf!!!
//mach was
end;