timerzeit herausfinden



  • in meinem projekt sieht es gerade so aus:

    wenn der timer->Start(); ist dann soll die zeit gemessen(in sekunden), bis es timer->Stop(); ist.es sollte möglichst einfach sein



  • etl schrieb:

    in meinem projekt sieht es gerade so aus:

    wenn der timer->Start(); ist dann soll die zeit gemessen(in sekunden), bis es timer->Stop(); ist.es sollte möglichst einfach sein

    Und was ist jetzt die Frage bzw. das Problem? 😕

    ** Timer::Start() aktiviert das Timer-Objekt und Timer::Stop() **schaltet das Timer-Objekt wieder ab. Solang der Timer aktiv ist, wird das "Elapsed"-Ereignis im eingestellten Intervall regelmäßig ausgelöst.

    Du kannst also, z.B., den Intervall auf 1 Sekunde einstellen und dann in Deinem "Elapsed"-Handler Deinen Sekunden-Zähler jeweils um eins hoch zählen.

    (BTW: Wenn es allerdings nur darum, geht zu messen, wie viel Zeit vergangen ist, dann sollte es mit der normalen** clock() **Funktion einfacher und zuverlässiger als mit der Timer-Klasse gehen!)



  • da ich neu bin weiß ich nicht jetzt wie ich das anwenden sollte.bemi mir sieht das so aus:

    <keypress>
    
    //hier soll die clock starten und
    //falls eine if anweisung true ist,
    //dann soll die clock enden und die
    //zeit speichern, danach die zeit in
    //einer messagebox angeben
    


  • clock_t timeStart, timeEnd;
    
    timeStart = clock();
    //Hier irgend etwas tun, das einige Zeit dauert...
    timeEnd = clock();
    
    printf("Dauer in Sekunden: %f\n", ((float)timeEnd-timeStart)/CLOCKS_PER_SEC);
    


  • hm der klappt bei mir nicht.liegt es daran das ich c++ (CLI) und winforms benutze?



  • etl schrieb:

    hm der klappt bei mir nicht.liegt es daran das ich c++ (CLI) und winforms benutze?

    Das kann gut sein. Ich würde dir nicht raten verschiedene Sprachen wild zu mischen, ausser genau das ist das Ziel (=Interop).

    Falls du bei C++/CLI und WinForms bleiben möchtest (was ich nicht empfehle, siehe unten), dann kannst du die Klasse Stopwatch benutzen.

    Ich empfehle C++/CLI mit WinForms nicht, weil es sehr viele Fallgruben aufgrund der Mischmöglichkeiten von C++/CLI, C++ und C bietet. Das führt oft zu Problemen und wenn nicht genau Interop das Ziel ist, sind diese Probleme schlicht unnötig. Hinzukommt, dass dies drei verschiedene Sprachen mit unterschiedlichen Eigenschaften sind (auch wenn sie ähnlich heissen und die Snytax ähnlich ist) - d.h. der zu erlernende Umfang ist wesentlich grösser als bei nur einer Sprache.
    Auch ist in aktuellen VS Versionen kein Forms-Designer mehr dabei - auch ein Zeichen von MS, dass die Sprache zumindest heute nicht mehr dafür gedacht ist, grossartige Desktop Applikationen mit UI zu erstellen.

    ➡ C++/CLI ist eine Sprache um die managed- und native Welt zu verbinden. Nicht mehr und nicht weniger.

    Und:

    etl schrieb:

    hm der klappt bei mir nicht.liegt es daran das ich c++ (CLI) und winforms benutze?

    Das ist eine eher drüftige Problembeschreibung... Fehlermeldungen während dem Bauen? Während das Programm läuft? Oder passiert schlicht nicht das was du erwartest hast? Was hast du erwartet und was passiert?



  • etl schrieb:

    hm der klappt bei mir nicht.liegt es daran das ich c++ (CLI) und winforms benutze?

    Nein, daran liegt es natürlich nicht. C++/CLI ist eine Übermenge von C++. Und C++ ist eine Übermenge.

    Jeder C Code ist damit automatisch gültiger C++ Code. Und jeder C++ Code (und damit auch jeder C Code) ist automatisch gültiger C++/CLI Code.

    In die umgekehrte Richtung gilt das aber selbstverständlich nicht 😉

    Bei mir funktioniert folgender völlig ohne Probleme:

    #include <ctime>
    
    using namespace System;
    
    static void doSomething(void)
    {
    	for(int i = 0; i < 5000; i++)
    	{
    		System::Console::WriteLine("Hello world!");
    	}
    }
    
    int main(array<System::String ^> ^args)
    {
    	clock_t timeBefore, timeAfter;
    
    	timeBefore = clock();
    	doSomething();
    	timeAfter = clock();
    
    	System::Console::WriteLine("Operation took {0} clock ticks ({1} seconds).", timeAfter - timeBefore, double(timeAfter - timeBefore) / double(CLOCKS_PER_SEC));
    	return 0;
    }
    

    Ausgabe:

    Hello world!
    Hello world!
    Hello world!
    .....
    Hello world!
    Hello world!
    Hello world!
    Operation took 5100 clock ticks (5,1 seconds).
    


  • Bitte den ersten Doppelpost ignorieren, ich konnte aus irgend einem Grund nicht editieren. Wenn das ein Moderator liest, bitte den ersten der beiden Posts löschen!

    etl schrieb:

    hm der klappt bei mir nicht.liegt es daran das ich c++ (CLI) und winforms benutze?

    Nein, daran liegt es natürlich nicht! C++/CLI ist eine Übermenge von C++. Und C++ ist eine Übermenge C++/CLI.

    Jeder C Code ist damit automatisch gültiger C++ Code. Und jeder C++ Code (und damit auch jeder C Code) ist automatisch gültiger C++/CLI Code.

    In die umgekehrte Richtung gilt das aber selbstverständlich nicht 😉

    Bei mir funktioniert folgender völlig ohne Probleme:

    #include <ctime>
    
    using namespace System;
    
    static void doSomething(void)
    {
    	for(int i = 0; i < 5000; i++)
    	{
    		System::Console::WriteLine("Hello world!");
    	}
    }
    
    int main(array<System::String ^> ^args)
    {
    	clock_t timeBefore, timeAfter;
    
    	timeBefore = clock();
    	doSomething();
    	timeAfter = clock();
    
    	System::Console::WriteLine("Operation took {0} clock ticks ({1} seconds).", timeAfter - timeBefore, double(timeAfter - timeBefore) / double(CLOCKS_PER_SEC));
    	return 0;
    }
    

    Ausgabe:

    Hello world!
    Hello world!
    Hello world!
    .....
    Hello world!
    Hello world!
    Hello world!
    Operation took 5100 clock ticks (5,1 seconds).
    

    [/quote]



  • Bitte den Deifachpost ignorieren, ich konnte aus irgend einem Grund nicht editieren. Wenn das ein Moderator liest, bitte die ersten beiden der drei Posts löschen.

    etl schrieb:

    hm der klappt bei mir nicht.liegt es daran das ich c++ (CLI) und winforms benutze?

    Nein, daran liegt es natürlich nicht! C++/CLI ist eine Übermenge von C++. Und C++ ist eine Übermenge von C.

    Jeder C Code ist damit automatisch gültiger C++ Code. Und jeder C++ Code (und damit auch jeder C Code) ist automatisch gültiger C++/CLI Code.

    In die umgekehrte Richtung gilt das aber selbstverständlich nicht 😉

    Bei mir funktioniert folgender völlig ohne Probleme:

    #include <ctime>
    
    using namespace System;
    
    static void doSomething(void)
    {
    	for(int i = 0; i < 5000; i++)
    	{
    		System::Console::WriteLine("Hello world!");
    	}
    }
    
    int main(array<System::String ^> ^args)
    {
    	clock_t timeBefore, timeAfter;
    
    	timeBefore = clock();
    	doSomething();
    	timeAfter = clock();
    
    	System::Console::WriteLine("Operation took {0} clock ticks ({1} seconds).", timeAfter - timeBefore, double(timeAfter - timeBefore) / double(CLOCKS_PER_SEC));
    	return 0;
    }
    

    Ausgabe:

    Hello world!
    Hello world!
    Hello world!
    .....
    Hello world!
    Hello world!
    Hello world!
    Operation took 5100 clock ticks (5,1 seconds).
    

    [/quote][/quote]



  • vielen dank!!!



  • Ich bin cool!


Log in to reply