Nach Abbruch durch Button kein erneutes Berechnen möglich
-
Noch jemand wach ?
Folgende Situation:
Lasse durch anklicken eines Start-Buttons eine Berechnung in einer Schleife durchführen(durch eine Funktion) bis "Anhalten" oder "Stop" gedrückt wird, oder die Bedingung erfüllt ist.Verwende globale Variablen.while(bSTOP==false) { while((i<=jahre1) && (!bAnhalten)) { rechne... } }
Egal ob die Schleife durchläuft oder nicht, danach passiert nichts mehr wenn ich die Berechnung erneut durch Anklicken des Start-Buttons durchführen will.
void __fastcall THauptfenster::ButtonStopClick(TObject *Sender) { bAnhalten=true; bSTOP=true; ShowMessage("GESTOPPT !"); Application->ProcessMessages(); } void __fastcall THauptfenster::ButtonAnhaltenClick(TObject *Sender) { bAnhalten = true; }
Gibts ne verständliche Lösung ? :p
-
Setzt Du die GLOBALEN Variablen auch richtig zurück (initialisierst Du die neu)?
-
Wie genau meinst Du das ??
Erklär mal bitte kurz.Ich glaube aber nicht.
-
Naja du musst bSTOP und bAnhalten doch erst wieder auf 'false' setzen. Weil sonst geht er in die Schleifen erst gar nicht mehr rein, weil die Abbruchbedingungen schon erfuellt sind.
MfG Aoeke
-
bSTOP und bAnhalten setze ich beim Anklicken des Start-Buttons auf false.
Wenn ich dann alles zurücksetze und Start klicke, rechnet er aber in der alten Schleife weiter. Und wie schon gesagt nach dem Durchlauf der Schleife ist Schluß.
Die globalen Variablen scheinen mir das Problem zu sein.
Beim Programmstart werden sie ja automatisch auf 0 gesetzt.
Aber wie funktioniert das zur Laufzeit ?
-
Ha ha...
das Problem hat sich geklärt.
Habe die Variablen beim Zurücksetzen jetzt auf 0 gesetzt.Ich weiß. Aber gestern abend wars schon spät
Danke für die Hilfe zur Selbsthilfe