![]() |
Delphi-Version: 5
An Prozedur übergebene Parameter gehen verloren.
Hallo Allerseits!
Folgendes Problem: Ich rufe folgende Prozedur auf:
Delphi-Quellcode:
Bevor das Create ausgeführt wird, sind noch alle Daten vorhanden (alle Infos über das Hauptfenster).
Daten:=TDaten.Create(MainForm, MainForm, Test); //TDaten.Create(Aowner:TComponent; AParent:TWinControl; Irgendwas: EigenerDatentyp);
Soweit, so gut. Mit "F7" in die Routine springen. In der Routine angekommen, ist nur noch der Parameter "Irgendwas" mit Daten gefüllt. "Aowner" und "AParent" sind nil. Was ist da los? Was mache ich falsch? |
AW: An Prozedur übergebene Parameter gehen verloren.
Mir persönlich ist das zu wenig Quelltext, um da etwas erkennen zu können.
|
AW: An Prozedur übergebene Parameter gehen verloren.
Schreib dir doch eine Procedure die ankommende Parameter in ein Logfile schreibt ;)
Damit kannst du immer sehen welche Daten ankommen. Achja, als Vergleichswert musst du natürlich auch Protokollieren was du der Procedur an Parametern übergibst. |
AW: An Prozedur übergebene Parameter gehen verloren.
Zitat:
Delphi-Quellcode:
mit, bzw. reiche die durch.
AOwner: TComponent; AParent: TWinControl;
Delphi-Quellcode:
scheint auch Informationen zu enthalten;
AOwner
Delphi-Quellcode:
scheint aber nil zu sein.
AParent
Im MainForm wird ein Konstruktor einer Klasse aufgerufen. Diesem Konstruktor gebe ich die Infos
Delphi-Quellcode:
des Hauptformulars mit.
AOwner: TComponent; AParent: TWinControl;
Innerhalb des Konstruktors der aufgerufenen Klasse in der 2. Unit wird wiederum der eigentlich Konstruktor der Klasse aufgerufen der die Info über
Delphi-Quellcode:
benötigt. Ich reiche diese also nur durch. In der 3. Unit meldet der Compiler dann an der Stelle
AOwner: TComponent; AParent: TWinControl;
Delphi-Quellcode:
die Fehlermeldung: "Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000."
Parent := AParent;
In der Haupt-Unit:
Delphi-Quellcode:
In der 2. Unit:
procedure TMainForm.FormCreate(Sender: TObject);
begin //mach was Daten:=TDaten.Create(MainForm, MainForm, DBTest); //mach was end;
Delphi-Quellcode:
In der 3. Unit:
constructor TDaten.Create(Aowner:TComponent; AParent:TWinControl; Datenbank: TdBase);
begin //mach was Test1:=TSoftSPS.Create(Aowner, AParent, "irgendein Integer-Wert"); //mach was end;
Delphi-Quellcode:
constructor TSoftSPS.Create(AOwner: TComponent; AParent: TWinControl; VarGroesse: Integer);
begin Parent := AParent; //hier tritt der Fehler auf!!! //mach was end; |
AW: An Prozedur übergebene Parameter gehen verloren.
Zitat:
|
AW: An Prozedur übergebene Parameter gehen verloren.
Zitat:
Ein "OnFormularFertiggestellt" gibt es ja nicht, oder? Zumindest habe ich nichts im Objektinspektor gefunden. Mein erster Versuch war mit
Delphi-Quellcode:
. Da dies aber so nicht funktionierte, hatte ich das geändert und nicht wieder zurück geändert.
Daten:=TDaten.Create(self, self, DBTest);
|
AW: An Prozedur übergebene Parameter gehen verloren.
Du könntest mal versuchshalber Loaded überschreiben, da müsste es IMO funktionieren.
|
AW: An Prozedur übergebene Parameter gehen verloren.
Zitat:
Hast Du ein Beispiel für mich? |
AW: An Prozedur übergebene Parameter gehen verloren.
Delphi-Quellcode:
type
TForm1 = class(TForm) private { Private-Deklarationen } protected procedure Loaded; override; public { Public-Deklarationen } end; ... procedure TForm1.Loaded; begin inherited; ShowMessage('Geladen: ' + self.Name); end; |
AW: An Prozedur übergebene Parameter gehen verloren.
Hi,
schon mal AfterConstruction versucht? Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz