Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Licznik czasu działający w tle.

Ostatnio zmodyfikowano 2018-02-23 09:42
Autor Wiadomość
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?
C/C++
#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;
}
P-169570
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ść.
P-169571
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ć.
P-169582
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.
C/C++
while( kbhit() )
{
    znak = _getch(); //czytamy naciśnięty klawisz
    ...
}

2.
jest też możliwość aplikacji client-serwer
np.
http://cpp0x.pl/kursy​/Kurs-WinSock-C++​/Tlo-Klient-Serwer/276
 
P-169584
« 1 »
  Strona 1 z 1