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.
-
Bezweifle ich nicht. Gibt es denn für DOS/Console eine Verzögerungsroutine mit Zeitkonstante?
-
Elektronix schrieb:
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 kommenhier 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?