Schleife rückwärts..aber wie



  • Hallo,

    ich habe eine einfache frage, wie kann ich in einer schleife zurückzählen?

    for (int i=10;i<=0;i--)
     {
     Application->ProcessMessages();
     Label1->Caption=i;
     }
    

    funktioniert nicht...er zählt nicht runter auf null!



  • ja, woran mag das wohl liegen? 😕

    i<=0 -> Führe Schleife so lange aus, wie i kleiner oder gleich 0 ist. Da i aber mit 10 initialisiert wird, ist diese Bedingung immer falsch. Ergo wird auch die Schleife nicht ausgeführt...



  • Hallo Testerlein

    Versuche es mal so das funzt: 😃

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    int i = 10;
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    
    if( i != 0)
            Timer1->Enabled = true;
            i--;
            Application->ProcessMessages();
            Label1->Caption=i;
    if(i==0)
            Timer1->Enabled = false;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Timer1->Enabled = true;
    }
    //---------------------------------------------------------------------------
    

    😃
    Allen im Board noch ein gesundes neues Jahr 2005



  • @Prae... ??



  • @ Joe

    Ich weiß hat zwar net viel mit schleife zu tun wenn er was rückwärts oder
    vorwärts zählen will erfüllt es den gleichen zweck. 😉



  • Das einzige was er an seinem Code ändern muss ist:

    for (int i=10;i<=0;i--)
    

    in

    for (int i=10;i>=0;i--)
    


  • Ja das ist ja ok aber da wir die schleife so schnell durschlaufen

    das man net sieht das er zurückläuft.

    Dann muss er es so ändern um was vom zählen mitzubekommen:

    for (int i = 10 ; i >= 0; i--)
      {
     Sleep (1000);
     Application->ProcessMessages();
     Label1->Caption=i;
      }
    


  • Davon hat er aber nix gesagt. Das Problem war, dass die Schleife gar nicht durchlaufen wurde. Ich gehe mal davon aus, dass das Label->Caption... nur zur Kontrolle dient...

    Wir werden wissen, wenn 'Testerlein' was dazu sagt. 😉



  • ja genau @ Joe werden wir abwarten und Tee trinken ich fange schon mal an 😉 😋



  • So liebe leut: des Rätsels Lösung 🤡

    C/C++ Code:
    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    int i = 10;
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    
    if( i != 0)
            Timer1->Enabled = true;
            i--;
            Application->ProcessMessages();
            Label1->Caption=i;
    if(i==0)
            Timer1->Enabled = false;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Timer1->Enabled = true;
    }
    //--------------------------------------------------------
    

    war gut gemeind, aber hilft mir hier nich direkt was...weil ich ja eine schleife brauchte, und:

    Joe_M. schrieb:

    Ich gehe mal davon aus, dass das Label->Caption... nur zur Kontrolle dient...

    👍 👍 richtig!

    und somit habe ich genau das:

    for (int i = 10 ; i >= 0; i--)
      {
     Sleep (1000);
     Application->ProcessMessages();
     Label1->Caption=i;
      }
    

    gesucht! 👍 😃

    danke erstmal!


Anmelden zum Antworten