Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi EStackOverflow (https://www.delphipraxis.net/22180-estackoverflow.html)

MasterC 13. Mai 2004 18:10


EStackOverflow
 
Hi, habe ein komisches Problem:

Dieser Code ist im OnClick Ereignis:

Delphi-Quellcode:
  If useactlinecolor.Checked then begin
    useactlinecolor.Checked := false;
    colorbox.Enabled := false; end
  else begin
    useactlinecolor.Checked := true;
    colorbox.Enabled := true;
  end;
verursacht folgendes:

Code:
Im Projekt BlitzEdit.exe ist eine Exception der Klasse EStackOverflow aufgetreten. Meldung: 'Stack-Überlauf'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
MfG ganxta.

mirage228 13. Mai 2004 18:19

Re: EStackOverflow
 
Hi,

Ich nehme an du hast den Code im OnChange von "useactlinecolor".

Wenn du dort "Checked" setzt dann wird sofort wieder "OnChange" aufgerufen und du landest in einer Endlosschleife bis es zum Stacküberlauf kommt!

Lösung:

Globale Variable (im private Abschnitt des Forms): FUpdating: Boolean;

Der Code sieht dann so aus:
Delphi-Quellcode:
if not FUpdating then
begin
  FUpdating := True;
  try
    // EDIT: So gehts besser:
    UseActLineColor.Checked := not UseActLineColor.Checked;
    ColorBox.Enalbed := UseActLineColor.Checked;
  finally
    FUpdating := False;
  end;
end;
Der Clou: Während FUpdating = True ist, wird dieser Block nicht ausgeführt und somit kommt es zu keiner Endlosschleife.


Ich hoffe, ich habe deine Problem richtig erkannt und gelöst. ^^

mfG
mirage228


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