timer



  • hallo
    ich habe eine schleife die eiunen countdown machen soll.
    also ganz einfach:

    while(x <= 100)
    	{
    		Console::WriteLine( + x + );
    		x++;
    	}
    

    wie kann ich nun sowas wie einen timer einsetzten der dafür sorgt, dass eine zahl in einer 1/4 sec geschrieben wird
    (das ganze ist eine Konsolenanwendung)
    danke für schnelle antworten





  • zuerst den Timer erzeugen

    System::Windows::Forms::Timer ^mTimer = gcnew System::Windows::Forms::Timer;
    mTimer->Interval = 250;
    mTimer->Tick += gcnew System::EventHandler(this, &Form1::mTimerMethode);
    mTimer->Start();
    

    Dann die Methode die bei jedem Tick angesprochen wird.

    private: System::Void mTimerMethode(Object ^sender, EventArgs ^e){
        ---blablabla---
    }
    


  • gei mir sieht das jetzt so aus:

    int x = 1;
    
    	System::Windows::Forms::Timer ^mTimer = gcnew System::Windows::Forms::Timer; 
    	mTimer->Interval = 250; 
    	mTimer->Tick += gcnew System::EventHandler(this, &Form1::mTimerMethode); 
    	mTimer->Start();
    
    	private: System::Void mTimerMethode(Object ^sender, EventArgs ^e)
    			 { 
    
        while(x <= 100)
    	{
    		Console::WriteLine( + x + );
    		x++;
    	}
    
    	Console::WriteLine("\n\n\a\a\aferig!!!");
    			}
    

    der compiler meint es seien 26 fehler drin was ist da noch falsch muss ich noch was anderes einbinden?
    danke aber schonmal für die antworten



  • c++ freak schrieb:

    der compiler meint es seien 26 fehler drin was ist da noch falsch muss ich noch was anderes einbinden?

    Es fehlt der komplette Rahmen. Sollen wir raten, wo Du diese Zeilen hingeklatscht hast?

    Zu: "was ist da noch falsch"
    Antwort: Du hast ungenügend Informationen geliefert.



  • dann die ganze datei^^ sry dachte es versteht sich von selbst bei einer konsolenanwendung (bin noch nicht so lang an c++ dran)

    #include "stdafx.h"
    
    using namespace System;
    
    int main(array<System::String ^> ^args)
    {
    	int x = 1;
    
    	System::Windows::Forms::Timer ^mTimer = gcnew System::Windows::Forms::Timer; 
    	mTimer->Interval = 250; 
    	mTimer->Tick += gcnew System::EventHandler(this, &Form1::mTimerMethode); 
    	mTimer->Start();
    
    	private: System::Void mTimerMethode(Object ^sender, EventArgs ^e)
    			 { 
    				 while(x<=100){
    		Console::WriteLine( + x + );
    		x++;
    				 }
    	}
    
    	Console::WriteLine("\n\n\a\a\aferig!!!");
    			}
        return 0;
    }
    


  • Du hast da in deiner Main Funktion eine Funktions- Definition (mTimerMethode).
    Simon



  • sry wenns dumm erscheint aber was meinst du soll ich machen?
    einfach den teil

    System::Windows::Forms::Timer ^mTimer = gcnew System::Windows::Forms::Timer; 
        mTimer->Interval = 250; 
        mTimer->Tick += gcnew System::EventHandler(this, &Form1::mTimerMethode); 
        mTimer->Start();
    

    vor main() schreiben?



  • Einfach

    private: System::Void mTimerMethode(Object ^sender, EventArgs ^e)
                 {
                     while(x<=100){
            Console::WriteLine( + x + );
            x++;
                     }
        }
    

    vor Main schreiben. Es handelt sich dabei um eine Funktionsdefinition, die nicht innerhalb einer anderen Funktion (main) stehen darf.

    Du wirst auch noch Probleme mit dem Timer im Namespace System::Windows::Forms kriegen, weil bei Konsolen-Anwendungen keine Verweise auf System.Windows.Forms existieren.

    Also unter Optionen->Allgemeine Eigenschaften->Verweise einen neuen Verweis auf die Dll System.Windows.Forms setzen.

    Oder du verwendest den Timer im Namespace System::Timers



  • taraneas schrieb:

    Du wirst auch noch Probleme mit dem Timer im Namespace System::Windows::Forms kriegen, weil bei Konsolen-Anwendungen keine Verweise auf System.Windows.Forms existieren.

    Also unter Optionen->Allgemeine Eigenschaften->Verweise einen neuen Verweis auf die Dll System.Windows.Forms setzen.

    Oder du verwendest den Timer im Namespace System::Timers

    Nein. Nimm eben den Timer aus System::Threading.
    Simon



  • Was ist besser am System::Threading::Timer?


Anmelden zum Antworten