![]() |
Stack-Überlauf nach einiger Zeit
Hallo, Leute,
woran kann denn das nur liegen, dass bei meinem Programm nach einiger Zeit (wahrscheinlich mehr als 10min) ein Stack-Überlauf auftritt und das Programm geschlossen wird? Ich verwende weder Internet noch Sockets etc. Ich habe gelesen, dass es von Sortierfunktionen kommen kann, aber damit habe ich noch nie Probleme gehabt und habe dieses Mal auch keine (mir bekannten) Neuerungen verwendet. Ich habe die maximale Stackgröße schon auf das vierfache Erhöht (war ein Tipp hier im Forum), hat aber auch nichts gebracht; ich bin aber auch nicht mit der Stoppuhr daneben gesessen. Da schaut's bei mir echt düster aus. Von Stacks hab ich keinen Plan. Das ist echt Mist: Das erste "komplexere" Programm, das auf Anhieb funktioniert und dann sowas! :wall: Bitte, helft mir! :gruebel: |
Re: Stack-Überlauf nach einiger Zeit
Poste etwas Code! Ohne kann man eigentlich nur raten.
Das kann zB von einer Endlosschleife kommen, die den Stack zum Überlaufen bringt. |
Re: Stack-Überlauf nach einiger Zeit
Liste der Anhänge anzeigen (Anzahl: 1)
Ich kann aber auch nicht die 800 Zeilen posten. Ich kann's höchstens mal anhängen.
|
Re: Stack-Überlauf nach einiger Zeit
Konntest du es denn nicht irgendwie eingrenzen? Passiert es immer? Auch wenn du das Programm einfach nur im Leerlauf läßt? Oder nur, wenn du etwas bestimmtest tust?
Läuft evtl. ein Timer? |
Re: Stack-Überlauf nach einiger Zeit
Ich weiß nicht, wonach ich suchen soll, daher kann ich es nicht eingrenzen. Ich teste es jetzt nochmal, ob es vielleicht daran lag:
Delphi-Quellcode:
Aber das hatte ich schonmal so und da ist nix passiert.
procedure TForm1.AnClick(Sender: TObject);
begin An.Checked:=not An.Checked; if An.Checked then begin //TuDiesUndJenes Aus.Checked:=False; end else Form1.AusClick(Sender); end; procedure TForm1.AusClick(Sender: TObject); begin Aus.Checked:=not Aus.Checked; if Aus.Checked then begin //HinUndHer An.Checked:=False; end else Form1.AnClick(Sender); end; |
Re: Stack-Überlauf nach einiger Zeit
Moin Aike,
Zitat:
|
Re: Stack-Überlauf nach einiger Zeit
Japp, aber genau die Stelle is es.
Das Problem ist, daß ein manuelles Setzen á la "CheckBox1.Checked := true" auch das OnClick-Ereignis aufruft. Dadurch kommt es zu einer Endlosschleife und du hast deinen Stack-Overflow. :mrgreen: |
Re: Stack-Überlauf nach einiger Zeit
Ich liebe euch.
|
Re: Stack-Überlauf nach einiger Zeit
:love: Danke schön! :lol:
Auf jeden Fall versteh ich nicht ganz, was du mit der jeweils ersten Zeile bezweckst. Was du bislang tust, ist bei jedem Ändern der Markierung diese wieder zurückzusetzen. Denn bereits durch den Klick wird die CheckBox "gecheckt" bzw "entcheckt". Das Umändern der Markierung wäre daher also sinnlos. Und genau das ist es auch, was zum Stack-Überlauf führt. Laß die erste Zeile weg und es funktioniert. //Edit: OK, aber auch nur, solange man nicht 2mal nacheinander auf die selbe CB klickt. :lol: Damit das auch klappt, müßtest du den else-Teil auch entfernen. Und dann klappts auch nich mehr, wie es soll. Hör einfach nich auf mich! :lol: |
Re: Stack-Überlauf nach einiger Zeit
Moin!
Ok, grundsätzlich bei den CheckBoxen das Checked := Not Checked raus. Und bei dem Links/Rechts Paar empfehle ich dir eine TRadioGroup bzw. 2 TRadioButtons die angeben ob links oder rechts. Weil bei denen brauchst du nur einen als aktiv zu setzen und der andere wird dann automatisch zurück gesetzt. Mit den CheckBoxen haut das nicht hin, hat mein Vorredner schon festgestellt. Auch dein in "Vordergrund" setzen im FormCreate sollte nicht funktionieren, da das Form-Handle auf das du dich beziehst noch nicht existiert im FormCreate meines Erachtens nach. MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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