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!


  • Mod

    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 must

    for (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


Anmelden zum Antworten