Licznik czasu działający w tle.
Ostatnio zmodyfikowano 2018-02-23 09:42
Zigor36 Temat założony przez niniejszego użytkownika |
Licznik czasu działający w tle. » 2018-02-22 17:39:05 Witam, szukam rozwiązania jakby można było zrobić, żeby kod w aplikacji konsolowej działał w tle. Tzn. wykonywał by się główny program, a w nim ten licznik czasu. Jak można by zrobić coś takiego? #include <iostream> #include <windows.h> #include <cstdlib>
using namespace std;
int main() { int sec = 0, min = 0, hour = 0; for(;; ) { sec++; if( sec == 60 ) { min++; sec = 0; } else if( min == 60 ) { hour++; min = 0; } cout << hour << ":" << min << ":" << sec << endl;; Sleep( 1000 ); system( "cls" ); } return 0; }
|
|
jankowalski25 |
» 2018-02-22 17:53:05 Poczytaj o wielowątkowości. Chyba nie ma innego sposobu. Teoretycznie można użyć jednego wątku, ale to i tak będzie sztucznie udawana wielowątkowość. |
|
pekfos |
» 2018-02-22 22:27:34 Taki zegarek jest nic nie wart, bardzo szybko zacznie się późnić, śmiesznie szybko w porównaniu do najtańszego dziadostwa wyprodukowanego w Chinach. Jak masz wyświetlać czas, to wyświetlaj czas, a nie twoją luźną jego interpretację. time() ma dokładność sekundową, więc będzie tu w sam raz. W momencie aktualizacji tego co masz na ekranie w konsoli, wypisuj nową wartość czasu. To będzie działać poprawnie, ale niekoniecznie będzie się aktualizować co sekundę. Aby działało stabilnie co sekundę, trzeba użyć wielowątkowości, a zrobienie tego poprawnie jest daleko ponad twój poziom i to wciąż nie będzie nieinwazyjna zmiana w aplikacji, do której chcesz ten zegar dodać. |
|
darko202 |
» 2018-02-23 09:42:17 Poczytaj o wielowątkowości. Chyba nie ma innego sposobu. |
1. można wykorzystać funkcję kbhit() + pętla while(...) po naciśnięciu klawisza wykonuje warunek pętli while i operacje zawarte w niej jeśli nie nacisnęliśmy to program się nie zatrzymuje np. while( kbhit() ) { znak = _getch(); ... }
2. jest też możliwość aplikacji client-serwer np. http://cpp0x.pl/kursy/Kurs-WinSock-C++/Tlo-Klient-Serwer/276 |
|
« 1 » |