verzoegerung mit timer



  • Ich hoffe einer von Euch kann mir helfen.
    Ich bekomme das einfach nicht hin.

    Es soll ein Zufallsbuchstabe in einem Label erscheinen.
    !!! Das habe ich !!!
    Nun soll eine Verzoegerung fuer die Ausgabe des Zufallsbuchstabens mit einem weiteren Timer erzeugt werden.
    Die Verzoegerung soll etwa 1 bis 5 Sekunden dauern.
    Nachfolgend habe ich den Code.
    BITTE BITTE helft mir!!!!

    /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
    /* Verzoegerung von 1-5 Sekunden, bis der Buchstabe ins Label gestellt wird */
    /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
    
    class __Form1_declspec Form1 : public __Form1_Base
    {
    
        public:       // add your public instance data here
        private:      // add your private instance data here
    
            clock_t                         startZeit, stopZeit,z_Zeit;
            WULong                          timerTicks;
    
        protected:    // add your protected instance data here
    
    };
    
    // Code added here will be included at the top of the .CPP file
    
    //  Include definitions for resources.
    #include "WRes.h"
    
    Form1::Form1()
    {
    }
    
    Form1::~Form1()
    {
    }
    
    /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
    
    WBool Form1::Schaltflaeche_1_Click(
        WObject *           source,
        WEventData *        event )
    {
        WString                  sBuchstabe;
        char                     cBuchstabe;
        WDouble                  zufall;
        WULong                   zufall1;
    
        label_3->SetText( "" );
        label_13->SetText( "" );
        label_4->SetText( "" );
    
    /*???????????????????????????????????????????????????????????????????????*/
    /*                     ?????? Das ist mein Problemteil ?????             */
    /*???????????????????????????????????????????????????????????????????????*/
    
        timerTicks = 0;
    
        z_Zeit = clock();
        srand (z_Zeit);
        zufall1 = rand()%500;
        for(timerTicks=0;timerTicks<zufall1;timerTicks++)
        timer_1->Stop();
    
    /*???????????????????????????????????????????????????????????????????????*/
                timerTicks = 0;
                timer_2->Start( 100,0 );
                startZeit = clock();
                srand (clock());
                zufall = rand();
                cBuchstabe = ((int) zufall % 26);
                cBuchstabe = cBuchstabe + 'a';
    
            sBuchstabe.Sprintf("%c", cBuchstabe);
            label_4->SetText( sBuchstabe);
    
            Textfeld_1->SetText( "" );
            Textfeld_1->SetFocus( );
    
        return FALSE;
    }
    
    /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
    
    WBool Form1::timer_1_Timer(
        WObject *               source,
        WTimerEventData *       event )
    {
        timerTicks++;         // Zaehler bei jedem Timer-Ereignis inkrementieren
        return FALSE;
    }
    /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
    /*                Reagieren auf eine Aenderung des Textfeld-Inhaltes       */
    /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
    
    WBool Form1::Textfeld_1_Change(
        WObject *           source,
        WEventData *        event )
    {
        WString                         text1, text2;
        WString                         string_diffZeit;
        WDouble                         diffZeit;
    
        text1 = Textfeld_1->GetText();  
        if (text1 == "")                
        {
           return FALSE;              
        }
        text2 = label_4->GetText();      // Entspricht der Inhalt des Textfeldes  
        if (text1 == text2)              // dem im Label 4?
        {                                // Ja!
          timer_2->Stop();
          stopZeit = clock();
    
          diffZeit = (stopZeit - startZeit);
          diffZeit = diffZeit / CLOCKS_PER_SEC;
    
          string_diffZeit.Sprintf("%4.2f",diffZeit);
          label_3->SetText( string_diffZeit );
    
          diffZeit = timerTicks / 10.0;
    
          string_diffZeit.Sprintf("%4.2f",diffZeit);
          label_13->SetText( string_diffZeit );
        }
        else                             // Entspricht der Inhalt des Textfeldes  
        {                                // dem im Label 4?
            Textfeld_1->SetText( "" );   // Nein: Text löschen
        }
    
        return FALSE;
    }
    /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
    
    WBool Form1::timer_2_Timer(
          WObject *                    source,
          WTimerEventData *            event )
    {
    
        timerTicks++;
        return FALSE;
    }
    

    Edit: Deinen Code zwischen die abschließende eckige Klammer und die neue beginnende schreiben, dann funktionieren die Code-Tags richtig.

    [ Dieser Beitrag wurde am 24.02.2003 um 14:43 Uhr von Garrett editiert. ]



  • Hallo,
    Standard C++ kennt keine Timer. Sehe ich das richtig, dass du mit dem Borland Builder arbeitest?



  • Ich arbeite mit Power ++ von Sybase


Anmelden zum Antworten