![]() |
setsame Zahlen
Ich habe hier eine Simulation die wenn sie komplett durchläuft keine Probleme macht. Aber ich habe jetzt um die einzelnen Auswertungen zu sehen einen Timer dazwischen der jede Sekunde einen neuen Wert holt. Um das zu unterbrechen habe ich einen button der true setzt und den Timer stopt. Nach ein paar duchläufen ist der Wert plötzlich true ohne das ich eine Erklärung dafür finden kann. Nun habe ich mir gedacht das irgendwas mit dem STACK nicht io ist. Denn andere Werte spinnen auch. Kann das sein, das das mit dem Timer zu tun hat der irgendwie werte sichert und wieder zurückschreibt (Register)?
|
Re: setsame Zahlen
So ist das munteres Raten, bitte zeig mal die Procedure, wo es Probleme gibt und falls du Fehlermeldungen oder Exceptions erhälst gib diese an. Ich weiß auch grad nicht ob der Timer in einem eigenen Thread läuft, aber ich halts für recht wahrscheinlich, so das du auch eventuell threadunsichere Dinge aufrufen könntest. Eine fehlerhafte Auswirkung auf die Register ist bei korrekter Verwendung eigentlich sehr unwahrscheinlich, im Zweifelsfall kannst du ja mal einen Debuglauf machen und die Registerwerte im Auge behalten.
|
Re: setsame Zahlen
Delphi-Quellcode:
Da wo die Markierung ist "stope" nach x durchläufen 1 oder mit anderen Werten (werteliste) an anderen Stellen aber der aktuelle wert ist nicht gleich! Label31 ist zur kontrolle. Ich denke es ist ein Überlauf oder so.
procedure TForm1.JvTimer1Timer(Sender: TObject);
begin inc(zaehler); Label31.Caption := ''; vorbereiten1; if stope = 1 Then Label31.Caption := Label31.Caption+'1' else Label31.Caption := Label31.Caption+'0'; For c := a to zaehler do werteaus1; //--------------------------------------------- if stope = 1 Then Label31.Caption := Label31.Caption+'1' else Label31.Caption := Label31.Caption+'0'; zeigean1; if stope = 1 Then Label31.Caption := Label31.Caption+'1' else Label31.Caption := Label31.Caption+'0'; vorbereiten2; if stope = 1 Then Label31.Caption := Label31.Caption+'1' else Label31.Caption := Label31.Caption+'0'; For c := a to zaehler do werteaus2; if stope = 1 Then Label31.Caption := Label31.Caption+'1' else Label31.Caption := Label31.Caption+'0'; zeigean2; if stope = 1 Then Label31.Caption := Label31.Caption+'1' else Label31.Caption := Label31.Caption+'0'; Label4.Caption := inttostr(zaehler); if zaehler >= Length(zzahl)-2 Then stope := 1; if stope = 1 Then begin JvTimer1.Enabled := False; Button1.Enabled := True; Button2.Enabled := True; Button3.Enabled := True; Button4.Enabled := True; Button5.Enabled := False; end; end; Auch wenn "Stope" Boolean ist ist das so. |
Re: setsame Zahlen
Hallo,
wird der Wert von "stope" in den Prozeduren "vorbereiten1", "werteaus1" und "zeigean1" verändert? Wo wird zaehler und stope initialisiert? Grüße Klaus
Delphi-Quellcode:
procedure TForm1.JvTimer1Timer(Sender: TObject);
begin inc(zaehler); Label31.Caption := ''; vorbereiten1; if stope = 1 Then Label31.Caption := Label31.Caption+'1' else Label31.Caption := Label31.Caption+'0'; For c := a to zaehler do werteaus1; //--------------------------------------------- if stope = 1 Then Label31.Caption := Label31.Caption+'1' // hier willst Du doch nicht addieren oder? else Label31.Caption := Label31.Caption+'0'; zeigean1; if stope = 1 Then Label31.Caption := Label31.Caption+'1' else Label31.Caption := Label31.Caption+'0'; vorbereiten2; if stope = 1 Then Label31.Caption := Label31.Caption+'1' else Label31.Caption := Label31.Caption+'0'; For c := a to zaehler do werteaus2; if stope = 1 Then Label31.Caption := Label31.Caption+'1' else Label31.Caption := Label31.Caption+'0'; zeigean2; if stope = 1 Then Label31.Caption := Label31.Caption+'1' else Label31.Caption := Label31.Caption+'0'; Label4.Caption := inttostr(zaehler); if zaehler >= Length(zzahl)-2 Then stope := 1; if stope = 1 Then begin JvTimer1.Enabled := False; Button1.Enabled := True; Button2.Enabled := True; Button3.Enabled := True; Button4.Enabled := True; Button5.Enabled := False; end; end; |
Re: setsame Zahlen
1. stope wird nur ind den beiden Proceduren geändert!
2. Die Werte werden gesetzt:
Delphi-Quellcode:
3. Das ist eine String-Addition String1+String2 = String1String2 ( "1"+"1"= 11)
procedure TForm1.Button4Click(Sender: TObject);
begin Button1.Enabled := False; Button2.Enabled := False; Button3.Enabled := False; Button4.Enabled := False; Button5.Enabled := True; stope := 0; zaehler := 1; a := 1; JvTimer1.Enabled := True; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 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