Entwickler-Ecke

Sonstiges (Delphi) - stack überlauf


Procedure - Mi 28.08.02 12:49
Titel: stack überlauf
also, ich habe 23 formulare!
auf der "startseite" kann man wählen, was man jetzt tun möchte!
wenn man nun z.b. die seite berechnungen wählt, schliest das progi die startseite, und öffnet die seite berechnungen! dabei kommt dann der fehler: stack überlauf!

nun weis ich nicht, wie ich das nun machen muss!
ich hab mehrere möglichkeiten ausprobiert!
1. die oben beschriebene

2. in der OnClose routine von jedem der 23 formulare, das alle furmulare geschlossen werden!
aber da kommt jedes mal dieser bescheuerte stack fehler

nun will ich einfach überprüfen, welche fenster noch offen sind! also welche fenster ich noch schließen muss!

hab nun rausgefunden, was ich falsch gemacht habe:

Du schließt ein Fenster, daraufhin werden in der OnClose-Methode alle anderen Fenster geschlossen, wenn eins der anderen Fenster gechlossen wird, ruft es wiederrum die OnClose-Methode aller anderen Fenster auf, das geht dann so lange, bis dein Stack nicht noch mehr Informationen speichern kann und dann gibts einen Fehler.

also hier meine frage:
wie kann ich das umgehen? also, wie kann ich das verändern, das das nicht zu so rekursion führt!


aogwaba - Mi 28.08.02 17:18

Na, dann nimm den Befehl zum schliessen der Fenster aus der On_CLose Methode heraus und verberge die Fenster mit 'hide'.
Abgesehen davon sind 23 Form's ziemlich heftig, ich weiss nicht
ob Window das so ohne weiters verkraftet.

cu
waba


Steffer - Mi 28.08.02 18:28

Nun, geh mal davon aus, das der User max. an einem Form arbeiten kann.

Erzeuge und zeige die Forms mit Form.ShowModal();

23 Forms sind kein Problem.
Du must diese nur sauber verwalten.

Der Stack-Überlauf ist imho eine Endlos-Schleife. Ohne Source must du da aber selbst suchen...