Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Nach welcher Regel werden Procedures ausgeführt? (https://www.delphipraxis.net/39628-nach-welcher-regel-werden-procedures-ausgefuehrt.html)

Nogge 5. Feb 2005 13:53


Nach welcher Regel werden Procedures ausgeführt?
 
Hallo Community,
Der Titel beschreibt leider nicht genau meine Frage, aber wusste keine bessere Formulierung. Ich möchte gern wissen, wann die 2te Form erstellen wird:
Delphi-Quellcode:
 Application.CreateForm(TForm1, Form1);
 Application.CreateForm(TForm2, Form2);
Da müsste es ja (rein logisch gedacht) 2 Varianten geben:
1.) Die 2te Form wird erst erstellt (mit dem zusätzlichen Code in OnCreate), wenn die 1te Form erstellt wurde (mit dem zusätzlichen Code in OnCreate).
2.) Die 2te Procedure wird sofort nach der 1ten ausgeführt, d.h. es könnte zu Problemen in der 2ten Procedure kommen, wenn diese best. Variablen o.Ä. aus der 1ten vorraussetzt. Wenn nämlich die 1te Procedure ziemlich viel Code enthält, der während des Ausführens der 2ten Procedure abgearbeitet wird, könnte eine Variable noch auf false (Standard) gesetzt sein, obwohl diese im Verlauf des Abarbeitens auf true gesetzt wird.

Hoffe, Ihr könnt mir helfen...
mfg Nogge

Bernhard Geyer 5. Feb 2005 14:01

Re: Nach welcher Regel werden Procedures ausgeführt?
 
Du hast D7-Pro und kannst die Sache ja selbst nachvollziehen:

Einfach Debug-Breakpoints an den zu untersuchenden Stellen setzen.
Aber Variante 1 ist richtig (Ohne Test und gewähr). OnCreate wird am Ende des Konstruktur gerufen.

Hansa 5. Feb 2005 14:11

Re: Nach welcher Regel werden Procedures ausgeführt?
 
Formübergreifende Variablen etc. sollte man tunlichst auf jeden Fall vermeiden. 8) Dann tauchen nämlich solche Probleme auf, die du hast/befürchtest. Ein Grund, warum ich Forms nur zur Laufzeit erzeuge ist, daß dann eventuelle Fehler viel früher auftauchen. Z.B. habe ich immer im OnCreate die Initialierungen drin. Dadurch kann man sicher sein, daß sofern keine AV kommt wegen nicht zugreifbarer Form, daß dann die Variablen von Anfang an richtige Werte haben. Es taucht aber kein Fehler auf und es handelt sich nicht um ein kleines Projekt.

Wenn du anfängst, zu überlegen in welcher Form welche Variable drin ist und wo sie wie von was auch immer für irgendeine Aktion gebraucht und auch verändert wird, das ergibt dann im Endeffekt den klassischen Spaghetti-Code. :mrgreen: Und dann gibts ja auch noch private, protected usw. Würde ich mir mal ansehen.

SirThornberry 5. Feb 2005 14:13

Re: Nach welcher Regel werden Procedures ausgeführt?
 
1tens ist richtig, zweiteres geht ja nicht wenn du nicht mit threads arbeitest da ja immer nur einwas gemacht werden kann. Und somit wird erst das create von form1 abgeschlossen und danach wird weitergemacht.

Nogge 5. Feb 2005 14:23

Re: Nach welcher Regel werden Procedures ausgeführt?
 
Ich habs gerade ausprobiert: Methode 2 ist die richtige! Ich habe ShowMessage('bla') in OnCreate von Form2 geschrieben und einen BreakPoint in OnCreate der Form1 gesetzt (einmal ganz oben, mitte und weiter unten). In allen Fällen habe ich die Message erhalten.
Gefällt mir zwar gar nicht, dass es sich so verhält, aber damit muss ich leben...
Vielen Dank für den Tipp, Bernhard Geyer.

Hansa 5. Feb 2005 14:35

Re: Nach welcher Regel werden Procedures ausgeführt?
 
Zitat:

Zitat von Nogge
...aber damit muss ich leben...

Mußt du nicht. Höchstens alle Antworten lesen. :stupid: Warum erzeugst du nicht alles selber und zwar dann, wenn das ganze Sinn macht ? Gehe mal zu Projekt -> Optionen -> Formulare.

Nogge 5. Feb 2005 17:35

Re: Nach welcher Regel werden Procedures ausgeführt?
 
Forms zur Laufzeit zu erstellen, ist zwar besser (nur eine Unit, d.h. keine formübergreifenden Variablen, kontrolliertes Erstellen von anderen Forms usw.), aber so müsste ich wie bei NonVCL alle Objects selbst setzen, d.h. die Position und deren Procedures, was unglaublich viel Arbeit ist!
@Hansa: Was wolltest du mir damit sagen?
Zitat:

Gehe mal zu Projekt -> Optionen -> Formulare.
Ich kann doch auch gleich manuell im program das "Autoerstellen" aller Forms deaktivieren, indem ich best. Zeilen löschen...

Luckie 5. Feb 2005 17:38

Re: Nach welcher Regel werden Procedures ausgeführt?
 
Du kannst doch in den Projekt Optionen einstellen, dass er die zweite Form nicht sofort beim Start laden soll. Nix mit Kontrolls erst zur Laufzeit erzeugen usw.

Nogge 5. Feb 2005 18:01

Re: Nach welcher Regel werden Procedures ausgeführt?
 
Wenn ich das richtig gemacht habe (Auto-create forms in Available forms verschieben außer der Main_Form), dann erscheint, wenn ich eine andere Form öffnen möchte, eine Fehlermeldung (geht nicht genauer..."Read of Address: YxYYYYYYY).

Sharky 5. Feb 2005 18:20

Re: Nach welcher Regel werden Procedures ausgeführt?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hai Nogge,

hast du das Fenster denn auch erstellt?
Im Anhang ist mal ein ganz einfaches Beispiel.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:17 Uhr.
Seite 1 von 2  1 2      

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