Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   FreePascal Problem mit FormCreate (https://www.delphipraxis.net/178626-problem-mit-formcreate.html)

TForm1 18. Jan 2014 11:04

Delphi-Version: 5

Problem mit FormCreate
 
Hallo zusammen,
ich habe schon wieder ein Problem, was ich bislang noch nicht lösen konnte.:(

Ich möchte zum Start des Programmes eine Typisierte Datei laden, der Quellcode dazu steht bei mir im FormCreate- Ereignis des Hauptformulars(ist das richtig, oder sollte man lieber den Code woanders hin schreiben?). Ich weiß nicht wieso, aber seitdem ich den Code zum laden dort hineingeschrieben habe stürzt mir das Programm beim Start bei einer ganz bestimmten Speicheradresse ab. Zuerst dachte ich, das läge am Quellcode des Ladens der Datei, aber wenn ich diesen auskommentiere, stürzt das Programm trotzdem ab.
Ich habe mir das ganze mal mit dem Debugger angeschaut, die Prozedur läuft ganz normal durch, so wie es sein soll, nur wenn er schließlich zu
Code:
Application.CreateForm(THauptfenster, Hauptfenster);
kommt, stürzt es ab.

Delphi-Quellcode:
procedure THauptfenster.FormCreate(sender: TObject);
begin
//hier der Code zum Laden der Datei
end;
Ich habe auch schon versucht, die ganze Prozedur auszukommentieren, hilft ebenfalls nichts. Auch der Compiler gibt keine Fehlermeldungen aus.

Ich hoffe ihr könnt mir dabei weiterhelfen!

Sir Rufo 18. Jan 2014 11:18

AW: Problem mit FormCreate
 
Benutzt du im FormCreate schon die Variable
Delphi-Quellcode:
Hauptfenster
?

Diese Variable ist zu dem Zeitpunkt noch nicht gesetzt.
Auch darum sollte niemals innerhalb der Form-Methoden mit dieser globalen Variablen gearbeitet werden.

Wenn man das wirklich möchte, dann nimmt man
Delphi-Quellcode:
Self
!

Jasocul 18. Jan 2014 11:30

AW: Problem mit FormCreate
 
Ich lese gerade, dass du D5 einsetzt.

Wenn du im Form.Create schon auf Komponenten der Form zugreifst, kann das durchaus zu dem beschriebenen Verhalten führen. in späteren Versionen wurde an der Stelle wohl etwas geändert. In D2005 hatte ich das nämlich mal versehentlich auch wieder so gemacht und es kam nicht zum Fehler.

Ich habe mir dann angewöhnt, solche Aktionen ins FormActivate zu verlagern.

TForm1 18. Jan 2014 11:33

AW: Problem mit FormCreate
 
Nein, innerhalb der Methode verwende ich nicht diese Variable. Das merkwürdige ist ja auch, dass selbst wenn die Methode leer ist (ich den Quelltext also auskommentiert habe) der Fehler trotzdem auftritt.

@Jasocul, nein ich verwende nicht Delphi 5. Wie in meinem Profil zu lesen, verwende ich Lazarus/Freepascal.

himitsu 18. Jan 2014 12:44

AW: Problem mit FormCreate
 
Zitat:

Zitat von TForm1 (Beitrag 1244228)
Ich habe mir das ganze mal mit dem Debugger angeschaut, die Prozedur läuft ganz normal durch, so wie es sein soll, nur wenn er schließlich zu
Code:
Application.CreateForm(THauptfenster, Hauptfenster);
kommt, stürzt es ab.

Und wie hast du den Debugger "benutzt"?
Einfach F9 und dann warten bis es knallt geht ja nunmal nicht immer. Vorallem wenn der komplette Stack zerschossen und die aktuelle Codeposition voll im Arsch sind, und keine Exceptionblöcke drumrum sind, dann kann der Debugger halt nicht mehr rausbekommen wo sich das Program im Quellcode befindet und der Stacktrace ist auch nicht möglich.


Mit F7 und F8 Stück für Stück an die Fehlerstelle ranarbeiten, selber (erfolgreiche) Haltepunkte setzen, damit man im nächsten Durchlauf gleich bis da hin springen kann.
Und falls im FreePascal auch mit RTL/VCL-Quellcodes gedebugt werden kann, dann hilft das hier bestimmt weiter, vorallem da ha scheinbar kaum noch Code von dir übrig ist, wenn du schon alles auskommentiert hast.

TForm1 18. Jan 2014 14:35

AW: Problem mit FormCreate
 
Hallo,
ich habe den Fehler jetzt gefunden, das Problem war das OnCreate- Ereigniss einer anderen Form. Da hatte ich genau den Fehler gemacht, wie Rufo schon gesagt hat, die Variable von der Form zu verwenden. Ich habe einfach den Fehler in der falschen Unit vermutet...:oops:

Trotzdem vielen Dank für die Hilfe!:thumb:

himitsu 18. Jan 2014 15:42

AW: Problem mit FormCreate
 
Ich hoff du behebst den Fehler auch an allen anderen Stellen.

Innerhalb der eigenen Form-Instanz verwendet man niemals diese Variable.
Immerhin ist man eh schon in der Instanz und braucht das sowieso nicht nochmal von einer unsicheren externen Quelle.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:43 Uhr.

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