Zeitverzögerung



  • Moin

    Gibt es in C++ einen befehl,mit dem man das Programm für ein paar sekunden unterbrechen kann?
    Ich habe bisher so was noch nie gesehen und in meinen Büchern steht auch nix drin.

    Danke 😉



  • Nein. Nur für ein bestimmtes Betriebssystem...
    Z.B. für Windows:

    Sleep(1000);
    


  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • also irgendwie klappt das bei mir net so richtig 😮

    #include<iostream>
    using namespace std;
    int main()
    {

    cout<<"test\a";

    sleep(1000);
    cout<<"test2\n";
    cin.get();
    }

    Weiß einer was ich falsch mache?



  • gross- und kleinschreibung beachten und windows.h includieren.



  • Danke! Es hat geklappt.

    Nur eine frage noch: was bewirkt es,wenn man windows.h includiert?

    Mfg



  • schnurres schrieb:

    was bewirkt es,wenn man windows.h includiert?

    Man kann die WinAPI verwenden.



  • schnorres schrieb:

    Nur eine frage noch: was bewirkt es,wenn man windows.h includiert?

    windows.h enthält die Bezeichnerdefinitionen für die WinAPI. Sinnigerweise programmierste Du für DOS/Console, nutzt dabei aber eine API-Funktion.

    Wenn Du ohne API-Zugriff eine Zeitverzögerung brauchst, versuch es doch mit einer einfachen Zählschleife:

    i(i=0; i<10000; i++)
    {
    ...
    
    }
    


  • ihr habt mir ein ganzes stück weiter geholfen 🙂

    Thx



  • Elektronix schrieb:

    [cpp]
    i(i=0; i<10000; i++)
    {
    ...
    }

    was natürlich auf unterschiedlichen plattformen (cpu, etc) unterschiedliche wartezeiten bringt. während sleep so halbwegs immer gleich bleibt.



  • @miller_m

    Bezweifle ich nicht. Gibt es denn für DOS/Console eine Verzögerungsroutine mit Zeitkonstante?



  • Elektronix schrieb:

    @miller_m

    Bezweifle ich nicht. Gibt es denn für DOS/Console eine Verzögerungsroutine mit Zeitkonstante?

    Sleep(schlafkonstante);



  • Elektronix schrieb:

    @miller_m
    Bezweifle ich nicht. Gibt es denn für DOS/Console eine Verzögerungsroutine mit Zeitkonstante?

    wollte es nur klar stellen für den threadersteller 😉
    im standard c gibt es noch den time.h header. dort sind einige funktionen mit der man sich eine eigene sleep funktion basteln könnte.



  • Ich habe jetzt ein neues Problem und habe mir gedacht dass ich nicht extra einen neuen Tread aufmachen muss:

    Ich hab mit das Visual c++ 2005 von mircrosoft runtergeladen und installiert.
    Ich kann aber irgendwie gar keine Projekte kompilen weil dann immer viele Fehler kommen 😮 😮

    hier ein Beispiel:

    #include <iostream>
    #include <windows.h>
    
    using namespace std;
    #pragma comment (lib, "winmm.lib")
    
    int main()
    {
    	srand (timeGetTime());
    
    	int auswahl;
    	int zahl;
    	do
    	{
    		cout << "1. W6 " << endl;
    		cout << "2. W20 " << endl;
    		cout << "3. W32 " << endl;
    		cout << "4. W100 " << endl;
    		cout << "5. Nix Mehr " << endl;
    		cin >> auswahl;
    
    		switch (auswahl)
    		{
    		case (1):
    			{
    				zahl = (rand()%6+1);
    				cout << "Die Wuerfel sind gefallen und sagen dir du hast eine " << zahl << " gewuerfelt" << endl;
    			}break;
    		case (2):
    			{
    			zahl = (rand()%20+1);
    			cout << "Die Wuerfel sind gefallen und sagen dir du hast eine " << zahl << " gewuerfelt" << endl;
    			}break;
    		case (3):
    			{
    				zahl = (rand()%32+1);
    				cout << "Die Wuerfel sind gefallen und sagen dir du hast eine " << zahl << " gewuerfelt" << endl;
    			}break;
    		case (4) :
    			{
    				zahl = (rand()%100+1);
    				cout << "Die Wuerfel sind gefallen und sagen dir du hast eine " << zahl << " gewuerfelt" << endl;
    			}
    		}
    	}while (auswahl != 5); 
    
    	return 0;
    }
    

    Da kommen folgende Fahler:

    ----- Erstellen gestartet: Projekt: jobst, Konfiguration: Debug Win32 ------
    Kompilieren...
    jobst.cpp
    c:\dokumente und einstellungen\rhino\eigene dateien\visual studio 2005\projects\jobst\jobst\jobst.cpp(7) : error C2871: 'std': Es ist kein Namespace mit diesem Namen vorhanden
    c:\dokumente und einstellungen\rhino\eigene dateien\visual studio 2005\projects\jobst\jobst\jobst.cpp(12) : error C3861: "srand": Bezeichner wurde nicht gefunden.
    c:\dokumente und einstellungen\rhino\eigene dateien\visual studio 2005\projects\jobst\jobst\jobst.cpp(12) : error C3861: "timeGetTime": Bezeichner wurde nicht gefunden.
    c:\dokumente und einstellungen\rhino\eigene dateien\visual studio 2005\projects\jobst\jobst\jobst.cpp(18) : error C2065: 'cout': nichtdeklarierter Bezeichner
    c:\dokumente und einstellungen\rhino\eigene dateien\visual studio 2005\projects\jobst\jobst\jobst.cpp(18) : error C2065: 'endl': nichtdeklarierter Bezeichner
    c:\dokumente und einstellungen\rhino\eigene dateien\visual studio 2005\projects\jobst\jobst\jobst.cpp(23) : error C2065: 'cin': nichtdeklarierter Bezeichner
    c:\dokumente und einstellungen\rhino\eigene dateien\visual studio 2005\projects\jobst\jobst\jobst.cpp(29) : error C3861: "rand": Bezeichner wurde nicht gefunden.
    c:\dokumente und einstellungen\rhino\eigene dateien\visual studio 2005\projects\jobst\jobst\jobst.cpp(34) : error C3861: "rand": Bezeichner wurde nicht gefunden.
    c:\dokumente und einstellungen\rhino\eigene dateien\visual studio 2005\projects\jobst\jobst\jobst.cpp(39) : error C3861: "rand": Bezeichner wurde nicht gefunden.
    c:\dokumente und einstellungen\rhino\eigene dateien\visual studio 2005\projects\jobst\jobst\jobst.cpp(44) : error C3861: "rand": Bezeichner wurde nicht gefunden.
    Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\rhino\Eigene Dateien\Visual Studio 2005\Projects\jobst\jobst\Debug\BuildLog.htm" gespeichert.
    jobst - 10 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    Mach ich irgenwas falsch oder hab ich eine falsche Sprache eingestellt 😕 😕

    Bei meinem alten Kompiler hat das alles wunderbar geklappt.

    Wenn mich einer im Icq adden will und mir helfen will 😉 315-208-847

    thx 😃



  • Never change a running system... 🕶 🤡



  • auf deutsch`?



  • #include <stdio.h>
    /* Ich hoffe das ich mit diesem Code helfen konnte */
    int main()
    {
    int Durchgang = 0;
         int Zahl = 0;
        int Beliebig = 150000000;
        /* 1 Sekunde entspricht 150000000*Durgang */
          #define Sleep while(Zahl<Beliebig) {Zahl++; }
    while(Durchgang<1)
        {
            Sleep;
            printf("Schleifen durgänge:%d",Zahl);
       Durchgang++;
             } 
    }
    

    ⚠ Wichtig! ⚠ Ich habe diesen Code auf einem 32-bit Prozessor getestet es könnte also sein das es sich auf 64-bit anderst benimmt ⚠



  • hier mal was mit Auflösung Microsekunde:

    boolean SleepMicroSeconds(int micro_sec){
    
    	LARGE_INTEGER		time1, time2;
    	int				aufloesung_ns, time_mircoseconds;
    
    	if(QueryPerformanceFrequency(&time1) == FALSE){
    		return FALSE;
    	}
    	aufloesung_ns = (int)(1000000000/time1.QuadPart);
    	QueryPerformanceCounter(&time1);
    	do{
    		QueryPerformanceCounter(&time2);
    		time_mircoseconds =  (((int)(time2.QuadPart - time1.QuadPart))*aufloesung_ns)/1000;
    		if(time_mircoseconds < 0){
    			break;
    		}
    	}while(time_mircoseconds < micro_sec);
    	return TRUE;
    }
    


  • Übrigens: es gibt tatsächlich C++11 eine sleep... commando. Siehe hier:

    http://www.cplusplus.com/reference/thread/this_thread/sleep_for/

    schnurres schrieb:

    Ich hab mit das Visual c++ 2005 von mircrosoft runtergeladen und installiert.

    Besser nicht. Nimm mindestens Visual Studio 2013. Oder Code::Blocks



  • coder777 schrieb:

    schnurres schrieb:

    Ich hab mit das Visual c++ 2005 von mircrosoft runtergeladen und installiert.

    Besser nicht. Nimm mindestens Visual Studio 2013. Oder Code::Blocks

    Hast Du mal nachgesehen, WANN dieses Posting verfasst worden ist?


Anmelden zum Antworten