Wieso wird schleife nicht per Button beendet?
-
Hallo:
Habe eine schleife, die per button unterbrochen werden kann....nur geht es nicht:
void __fastcall TForm1::Button1Click(TObject *Sender) { pause = false; int eingabe1=StrToInt(Edit1->Text); int eingabe2=StrToInt(Edit2->Text); ProgressBar1->Min=0; ProgressBar2->Min=0; ProgressBar1->Max=eingabe1; ProgressBar2->Max=eingabe2; while (!pause) { for (int i=0;i<=eingabe1;i++) { ProgressBar1->Position=i; Label1->Caption=i; for (int j=0;j<=eingabe2;j++) { Application->ProcessMessages(); ProgressBar2->Position=j; Label2->Caption=j; pause=true; } } } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { pause=true; } //---------------------------------------------------------------------------habe auch bool pause in der header als public deklariert!
-
Hallo
ueberleg mal warumm soltten die beiden for-Schleifen unterbrochen werden
du muesstest schon in den Schleifen deine Abbruechbedingung abfragen
MfG
Klaus
-
Aber so wie ich mir das anschauen müsste der doch schon aufhören wenn pause true ist oder?
-
Hallo
Nein, denn die Überprüfung wird ja nur einmal am Anfang gemacht.
Du mustfor (int i=0;i<=eingabe1;i++) { if (pause) break; ... }schreiben, damit bei jedem Durchlauf überprüft wird.
bis bald
akari
-
ich hab grad mal ein prog rausgekramt...da mach ich das so:
void __fastcall TForm1::Button1Click(TObject *Sender) { stop=false; int e1=StrToInt(Edit1->Text); int e2=StrToInt(Edit2->Text); while (!stop) { for (int j=1;j<=e2;j++) { Label2->Caption=j; for (int i=0;i<=e1;i++) { Application->ProcessMessages(); ProgressBar1->Min=0; ProgressBar1->Max=StrToInt(Edit1->Text); ProgressBar1->Position=i; Label1->Caption=i; stop=true; } } } }und da kann ich mit button unterbrechen