Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Stacküberlauf (https://www.delphipraxis.net/21475-stackueberlauf.html)

F.W. 3. Mai 2004 16:14


Stacküberlauf
 
Ich erhalte bei der unten notierten Stelle meines Quelltextes, immer einen Stacküberlauf. Ich habe das mal mit nem Breakpoint (rote Linie) versehen. Es wird immer wieder ausgeführt, wie in einer Schleife ohne Ende, !!!ABER DA IST KEINE SCHLEIFE!!! :wall:


Das ist ein Ausschnitt aus meinem Quelltext, das ist die Procedure des OnClick von zwei RadioButtons (verweisen also beide darauf) Da es aber manchmal vom Prog selbst (also ohne Klick) ausgeführt werden muss und der Checkedpunkt auch übernommen werden soll, habe ich die ersten drei Zeilen bis zu der mit -> gekennzeichneten reingeschrieben. Bei der Zeile mit dem Pfeil hängt er sich dann auf! Warum? Wenn ich die Zeile wegnehme klappt's!
Delphi-Quellcode:
{$R *.dfm}

procedure TWSForm.WasserCheckClick(Sender: TObject);
var
 Einheit: String;
begin
 WasserCheck.Checked := false;
 StromCheck.Checked := False;

-> TRadioButton(Sender).Checked := True;
 Einheit := TRadioButton(Sender).Hint;
Bin schonwieder ratlos? *Sowas ähnliches hatte ich schonmal, ich habs rausgelöscht und Zeichen für Zeichen abgetippt, dann gings, sowas macht mich rasend :evil:

Bitte helfen!

Sebastian Nintemann 3. Mai 2004 16:21

Re: Stacküberlauf
 
Hallo F.W.!

Ich denke das Problem ist, dass du der property Checked der aufrufenden Komponente (sender) einen Wert zuweist, hierbei wird aber die OnClick-Methode ausgelöst! Ein Verändern dieser property löst automatisch die Onclick-Methode aus. Und schon hast du deine Endlosschleife (die Prozedur ruft sich immer wieder selbst auf).

Viele Grüße, Sebastian

F.W. 3. Mai 2004 16:36

Re: Stacküberlauf
 
Stimmt! Hab ich noch nie gemerkt! Danke!

glkgereon 4. Mai 2004 20:17

Re: Stacküberlauf
 
mist, das problem kenn ich doch
:-D

bzw eher :wall: :wall: :wall:

es lebe die rekursion!!! :-D

Nicodius 4. Mai 2004 20:23

Re: Stacküberlauf
 
:x :evil: ich hasse diese verdammten rekursionen die haben wir bei einem Test den 3 eingebracht :lol:

Christian Seehase 4. Mai 2004 21:39

Re: Stacküberlauf
 
Moin Zusammen,

dieses Verhalten wird übrigens in der Hilfe zu TControl.OnClick beschrieben.
Zumindest bei D2, D5, D6 und D7.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:14 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