Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi An Prozedur übergebene Parameter gehen verloren. (https://www.delphipraxis.net/156915-prozedur-uebergebene-parameter-gehen-verloren.html)

FriendOfDelphi 20. Dez 2010 19:32

AW: An Prozedur übergebene Parameter gehen verloren.
 
Zitat:

Zitat von DeddyH (Beitrag 1069602)
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;

Ich habe
Delphi-Quellcode:
procedure TForm1.Loaded;
ausprobiert. Leider keine Veränderung. Der Compiler meldet weiterhin an der Stelle Parent := AParent; die Fehlermeldung: "Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000."

FriendOfDelphi 20. Dez 2010 19:34

AW: An Prozedur übergebene Parameter gehen verloren.
 
Zitat:

Zitat von Lemmy (Beitrag 1069621)
Hi,

schon mal AfterConstruction versucht?

Grüße

Delphi-Quellcode:
procedure TForm1.AfterConstruction;
habe ich auch gerade ausprobiert. Leider auch keine Veränderung. Der Compiler meldet auch hier an der Stelle Parent := AParent; die Fehlermeldung: "Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000."

mkinzler 20. Dez 2010 19:51

AW: An Prozedur übergebene Parameter gehen verloren.
 
.Loaded() sollte der richtige Ort sein

FriendOfDelphi 21. Dez 2010 11:13

AW: An Prozedur übergebene Parameter gehen verloren.
 
Liste der Anhänge anzeigen (Anzahl: 4)
Zitat:

Zitat von mkinzler (Beitrag 1069655)
.Loaded() sollte der richtige Ort sein

Was ich vielleicht noch anmerken muss: Ich verwende außer für das Hauptfenster "MainForm" keine grafischen Komponenten. Die baue ich direkt im Quellcode zusammen.
Ich habe jetzt mal beide Prozeduren, also
Delphi-Quellcode:
procedure TForm1.Loaded;
und
Delphi-Quellcode:
TForm1.AfterConstruction;
, eingebaut und bin dann das Programm mit "F7" im Single Step-Modus durchgegangen.
Delphi-Quellcode:
procedure TForm1.Loaded;
wird aufgerufen, bevor das Programm in
Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
verzweigt. Zu diesem Zeitpunkt sind meine grafischen Elemente noch nicht gebaut.
Delphi-Quellcode:
TForm1.AfterConstruction;
wird aufgerufen, nachdem
Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
abgearbeitet ist und wieder verlassen wurde. Zu diesem Zeitpunkt sind alle über den Quellcode erstellten grafischen Elemente bereits gebaut.
Ich weiß nicht, ob das wichtig ist.
Allerdings ist es so, dass in beiden Fällen der Compiler an der Stelle
Delphi-Quellcode:
Parent := AParent;
die Fehlermeldung: "Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000." bringt.
Zum Zeitpunkt des Aufrufs von
Delphi-Quellcode:
Daten:=TDaten.Create(self, self, Test); //TDaten.Create(Aowner:TComponent; AParent:TWinControl; Irgendwas: EigenerDatentyp);
zeigt der Compiler (wenn man mit dem Mauszeiger darüber fährt) für den ersten Parameter / das erste
Delphi-Quellcode:
self
: s. Datei "Inhalt_Aowner_TComponent_vorher.jpg" und für den zweiten Parameter / das zweite
Delphi-Quellcode:
self
: s. Datei "Inhalt_AParent_TWinControl_vorher.jpg".
Springt man mit "F7" in die Routine hinein zeigt der Compiler folgendes für den ersten Parameter: s. Datei "Inhalt_Aowner_TComponent_nachher.jpg" und für den zweiten Parameter: s. Datei "Inhalt_AParent_TWinControl_nachher.jpg (14,9 KB)".
Vielleicht hilft das weiter...

DeddyH 21. Dez 2010 13:31

AW: An Prozedur übergebene Parameter gehen verloren.
 
Kannst Du nicht einfach ein kleines Demoprojekt anhängen? Ich denke, im Gesamtzusammenhang versteht man das Problem besser.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz