Uhrzeit überprüfen
-
Gizm schrieb:
Also kommt es auf die Sekunden garnicht an...Solange die Richtige Stunde bzw. die richtige Minute läuft!?
Ich weiß ja nicht was duz vor hast...wie genau soll es denn sein ?
Gizm schrieb:
Aber das is trotzdem noch ein Problem

Jetzt kann mein Programm aber auch nur Überprüfen wenn es gestartet wird... Aber es soll ja zur Laufzeit auch kontrollieren können...Bzw. Man Startet das Programm. Die Uhrzeit ist noch nicht "true"... Das Programm gibt einen Text aus der dem Benutzer sagt das es noch nicht soweit ist oder so in der Art "Im Warte-Modus" oder sowas.... Wenn man das Programm jetzt laufen lässt soll es trotzdem noch erkennen ob die bestimmte Uhrzeit erreicht wird und dann nochmal einen Text ausgeben wie z.B. "Uhrzeit erreicht"....Als kontrolle das es geklappt hat.
Dafür brauch ich doch eine Schleife oder? Und eine Funktion die zur Laufzeit des Programms überprüft ob mittlerweile die bestimmte Uhrzeit erreicht wurde...Ansonsten wartet das Progg weiter und kontrolliert wieder..usw.
Jo, möglicherweise innem seperaten Thread...ich weiß ja nicht was das genau werden soll....

Gizm schrieb:
EDIT -->
Ach ja und das is mein Quellcode... Funktioniert irgendwie nicht... Der Sagt immer Falsch...
[cpp]#include <ctime> #include <iostream> using namespace std; int main() { char chTime[10]; _strtime(chTime); // Zum Anzeigen der Uhrzeit string strTime(chTime); if(!strTime.compare("00:20")) { cout << "Richtig!" << endl; } else { cout << "Falsch!" << endl; } return 0; }[/cpp]Das wundert mich nicht im geringsten:
so müsste es richtig sein:#include <ctime> #include <string> #include <iostream> // #include <windows.h> using namespace std; int main() { char chTime[10]; while(true) { _strtime(chTime); // Zum Anzeigen der Uhrzeit string strTime(chTime); if(!strTime.compare("00:36:50")) { cout << strTime << ": Richtig!" << endl; break; } else { //Sleep(1000); // geht nur unter windows musst noch windows.h inludieren...sieht dann schönder aus cout << strTime << ": Falsch!" << endl; } } return 0; }
-
Wenn du es nicht auf die Sekunde haben willst... musst du den vergleich String einfach nach dem 2. ':' abschneiden

-
oder find verwenden
_strtime(chTime); // Zum Anzeigen der Uhrzeit string strTime(chTime); string::size_type pos = strTime.find("00:20"); if(pos == 0) { cout << strTime << ": Richtig!" << endl; break; } else { cout << strTime << ": Falsch!" << endl; }
-
@ Codefinder: Ja genau so soll das sein... Jetzt läuft er solange bis die Zeit gekommen ist.Genau so wollt ich das haben...Okay an kann noch drann Arbeiten aber mein Problem ist dammit erstmal gelöst.
Und danke für eure Hilfe

EDIT --> Ach ja: Jetzt kommt ja immer "FALSCH" als text..jedes mal..bei jeder neuen Sekunde als Text. Geht das, dass man Nur einmal den Text ausgibt "Countdown wird gestartet!" z.B. und danach wird nichts mehr angezeigt? Oder zumindest nur noch punkte "WAIT. . . ." oder sowas ähnliches?
Weil ich bin ja in der Schleife drinn... das heisst der Wiederholt ja den Satz "Countdown wird gestartet!" immer wieder...
Beispiel:
[cpp] // In der Schleife if(!strTime.compare(22:00:00)) { cout << "RICHTIG" << endl; SLEEP(60); break; } else { cout << "Countdown wird gestartet!" << endl; cout << "WAIT. . . . . . " // usw. vielleicht habt ihr ja noch eine Bessere Idee } // Aus der Schleife raus [/cpp]Wenn manns so macht werden ja beide Sätze wiederholt...Ist ja logisch. Aber wie kann man das dann machen?
-
Du mußt dir halt merken wann du startest (bool Variable) und dann in Abhängigkeit davon den Satz oder eben Punkte ausgeben.
// außerhalb der Schleife bool gestartet(false); // In der Schleife if(!strTime.compare(22:00:00)) { cout << "RICHTIG" << endl; SLEEP(60); break; } else { if( !gestartet) { gestartet = true; cout << "Countdown wird gestartet!" << endl; cout << "WAIT. . . . . . " // usw. vielleicht habt ihr ja noch eine Bessere Idee } else cout << "."; // oder was du halt willst }
-
dankee für die Hilfe.... auf Bool wär ich jetzt wohl von alleine nie drauf gekommen
Wusste irgendwie noch nie richtig wofür das sein soll.Und wegen dem Punkt: Ist es eigendlich auch möglich (Gennerell die Frage) Punkte verschwinden zu lassen und dann wieder erscheinen zu lassen?
Man kennt das ja von anderen Programmen:So z.B.
leer
.
..
...
leer
.
..
...Nur halt in einer Zeile. Praktisch das Drei Punkte "geschrieben" werden, die dann wieder verschwinden, und dann wieder langsam "aufgebaut" werden.... Vielleicht wisst ihr ja was ich mein
Is doof sowas zu erklären 
Weil das würde irgendwie den "Warte-Effekt" verstärken oder besser Symbolisieren...
-
Ich weiß schon was du meinst. So eine Art Sanduhr auf der Konsole. Das dürfte mit Standardmitteln schwer zu machen sein. Frag doch noch mal im Konsolenforum nach bzw. versuche es mit SideWinders Improved Console.
Gute Nacht.
-
Jo werde ich machen... Mit der Improved Console bin ich eh noch nict so klar gekommen...Wollte nämlich schonmal was mit Farbigen Text ausprobieren und so.
-
Moin zusammen,
@Gizm:
Naja hab noch ne 'dirty'-Idee zum 'Warten-Effekt' ...du kannst mit system("cls") (windows!) den Inhalt der Konsole vollständig löschen...dann merktst du dirt wieviel punkte als warten zeichen da stehen ....und zeigst die immer an...nach ner gewissen Zeit erhöst du den Zähler...so gehst auch
Braunstein schrieb:
Du mußt dir halt merken wann du startest (bool Variable) und dann in Abhängigkeit davon den Satz oder eben Punkte ausgeben.
// außerhalb der Schleife bool gestartet(false); // In der Schleife if(!strTime.compare(22:00:00)) { cout << "RICHTIG" << endl; SLEEP(60); break; } else { if( !gestartet) { gestartet = true; cout << "Countdown wird gestartet!" << endl; cout << "WAIT. . . . . . " // usw. vielleicht habt ihr ja noch eine Bessere Idee } else cout << "."; // oder was du halt willst }Was ist denn SLEEP(...); ??
Das ist doch nicht c++ oder ?Also ich kenn Sleep(msec) von WndDoof...aber nicht SLEEP(sec)

-
Wird wohl ein Makro sein. Ich hab das da nicht reingesetzt sondern von oben mitkopiert.
-
Braunstein schrieb:
Wird wohl ein Makro sein. Ich hab das da nicht reingesetzt sondern von oben mitkopiert.
Hmm also wenn dus kopiert hast, dann betitelst du damit ja die gleiche Funktion die ich auch meinte , ok, dachte du meintest ne andere
PS: Sleep() ist ne Funktion, kein Makro