tbutton zaehler



  • servus

    brauche bisschen hilfe:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    int i=0, count;
    while (i<1500)
    {
    count = i;
    this->Label3->Caption = IntToStr(count);
    }

    }

    das da oben gibt mir auf dem label sofort 1500 aus.

    jedoch brauche ich das so, dass ich bei jedem buttonclick die clicks zähle.

    sprich bei 10 mal klicken, habe ich im label3 "10" stehen.

    was mache ich falsch?

    mfg greenhorn777



  • Versuch es doch mal so:
    Du brauchst keine Schleife!!!!

    int i=0; //---Globale Variable auf 0 setzen
    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    i++;  //--i um 1 inkrementieren wenn Button gedrückt wird
    this->Label3->Caption = IntToStr(i); //---Wert von i ausgeben
    }
    

    Gruß Hawk



  • vielen dank für die schnelle antwort.

    hätte net gedacht das es so leicht wäre. danke.

    und jetzt läuft auch der rest.

    MFG greeny 😉



  • Globale Variablen sollte man vermeiden. Hier kann man auch eine static-Variable verwenden.

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       static int i = 0;
       i++;  //--i um 1 inkrementieren wenn Button gedrückt wird
       this->Label3->Caption = IntToStr(i); //---Wert von i ausgeben
    }
    


  • Mal wieder was neues gelernt 🙂
    Was genau macht das Static?
    Wärst du so freundlich mir zu erklären warum das funktioniert^^?

    Mfg Chakuza





  • Eine static Variable wird nur einmal initialisiert, nämlich beim ersten Aufruf der Funktion. Die Zeile static int val=0; wird somit nur einmal ausgeführt und val behält seinen Wert bei weiteren Funktionsaufrufen.

    Der alles entscheidende Satz, dankeschön 🙂



  • Eigentlich brauchst du die static Variable überhaupt nicht, wenn der Button immer numerisch beschriftet wird:

    void __fastcall TForm1::Button1Click( TObject* Sender )
    {
       try
       {
          // Beschriftung des Buttons von Text -> Int konvertieren
          int Caption = StrToInt( Button1->Caption );
    
          // neue Beschriftung setzen
          Button1->Caption = IntToStr( Caption +1 );
       }
       catch( EConvertError& Excp )
       {
          // Fehler bei der Konvertierung, Button mit 1 beschriften
          Button1->Caption = "1";
       }
    }
    


  • Eine weitere Variante wäre es die Eigenschaft Tag zu nutzen. Da braucht man nur einmal zu konvertieren.
    siehe: viele Wege führen nach Rom 🙂


Anmelden zum Antworten