Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Stack-Überlauf nach einiger Zeit (https://www.delphipraxis.net/46255-stack-ueberlauf-nach-einiger-zeit.html)

Aike 21. Mai 2005 13:20


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:

leddl 21. Mai 2005 13:25

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.

Aike 21. Mai 2005 13:33

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.

leddl 21. Mai 2005 13:39

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?

Aike 21. Mai 2005 13:46

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:
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;
Aber das hatte ich schonmal so und da ist nix passiert.

Christian Seehase 21. Mai 2005 13:54

Re: Stack-Überlauf nach einiger Zeit
 
Moin Aike,

Zitat:

Zitat von Aike
...ob es vielleicht daran lag:

anzunehmen, denn bei der Zuweisung eines Wertes an die Eigenschaft Checked einer CheckBox, wird auch das Ereignis OnClick ausgelöst.

leddl 21. Mai 2005 13:57

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:

Aike 21. Mai 2005 13:58

Re: Stack-Überlauf nach einiger Zeit
 
Ich liebe euch.

leddl 21. Mai 2005 14:03

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:

Muetze1 21. Mai 2005 14:16

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.
Seite 1 von 2  1 2      

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