Uhrzeit überprüfen



  • Gizm schrieb:

    Weiss grad nich was das

    string strTime(szTime);
    

    bedeuten soll...Wozu brauch ich die Zeile? 😕

    -->Editiert: Ach ja der String is für die Überprüfung in der If Abfrage oder?

    Jop, ist ein Objekt der Klasse std::string, inkludiert in string (ohne .h)

    Gizm schrieb:

    Und das compare() versteh ich auch nicht bzw. ich habs noch nie gehört/gelesen.

    Aber ich glaub das ist genau das was ich gesucht hab

    Naja compare is ne Methode der Klasse std::string, damit kann man das aktuelle Objekt mit dem übergebenen String vergleichen 😉

    Gizm schrieb:

    --> Ach und noch ein Problem... Der Kontrolliert das ja auf die Sekunde genau oder?
    Dann müsst ich jetz eigendlich noch eine Schleife einbauen, die die Abfrage so oft durchlauft bis die Gewünschte Zeit erreicht ist. Dann muss die Schleife Abbrechen und mit dem nächsten vorgesehenen Befehl weiter Arbeiten oder?

    Hmm also wenn ich ehrlich bin... hab ich die Funktion "_strtime()" noch nie gesehen... 🤡

    Also das vergleicht eben den Inhalt des strings mit "22:00", wenn also in chTime gerade "22:00" steht stimmts...wenn du aber mit _strtime 22:00:07 oder so...aber nur 22:00 speicherst dann isses immer noch true...verstehste ? 💡 😉



  • Also kommt es auf die Sekunden garnicht an...Solange die Richtige Stunde bzw. die richtige Minute läuft!?

    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.

    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]
    


  • 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:

    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


Anmelden zum Antworten