Ustawienie czasu

0

Mam pytanko. Robie zegar. czas jak zrobic cos takiego zeby po wczytaniu danych program mi je ustawial jako czas

0

W czym ? Jezeli w windowsie to proponje zainteresowac sie funkcja SetSystemTime i struktura SYSTEMTIME, a jesli chodzi o dosa to chyba powinno zadzialac funckje z time.h. z tego co pamietam to obie funkcje przyjmuja inty jako godziny i iminut :)

Pozdrawiam

0

Ja tylko dodam od siebie, że jeżeli chciałbyś używać SetSystemTime na Windowsach NT, musisz nadać procesowi odpowiednie uprawnienia, np. tak:

   OSVERSIONINFO wersjaos;

    wersjaos.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
    GetVersionEx(&wersjaos);
    if(wersjaos.dwPlatformId==VER_PLATFORM_WIN32_NT)
    {
        OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&htoken);
        LookupPrivilegeValue(NULL,SE_SYSTEMTIME_NAME,&tprivileges.Privileges[0].Luid);
        tprivileges.PrivilegeCount=1;
        tprivileges.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
        AdjustTokenPrivileges(htoken,FALSE,&tprivileges,0,(PTOKEN_PRIVILEGES)NULL,0);
    }
0

Chodzi mi o windowsa

jaka to byla funkcja w time.h

0

#include <dos.h>

void __fastcall TForm1::Button1Click(TObject *Sender)
{
struct time t;
t.ti_hund = 0;
t.ti_sec = 0;
t.ti_min = 12;
t.ti_hour = 15;
settime(&t);
}

0

to jest c++ builder?? ty chyba sobie kpisz ze mnie

0

Mówiąc szczerze, to ja się zagubiłem, czy Ty chcesz to napisać w Builderze czy w jakimś dowolnym darmowym kompilatorze. W każdym razie, jeśli chcesz ustawić czas komendami WinApi, to najpierw potrzebujesz przygotować sobie strukturę SYSTEMTIME:

typedef struct _SYSTEMTIME {  // st  
    WORD wYear; 
    WORD wMonth; 
    WORD wDayOfWeek; 
    WORD wDay; 
    WORD wHour; 
    WORD wMinute; 
    WORD wSecond; 
    WORD wMilliseconds; 
} SYSTEMTIME;

której dokładny opis możesz znaleŹć np. w MSDN. Następnie, jeśli piszesz program w darmowym kompilatorze (nie wiem jakie uprawnienia procesu daje Builder, mozliwe, że tam to nie jest konieczne), musisz podnieść procesowi upranienia żeby mógł zmieniać czas systemowy (przykładowy kod wkleiłem we wcześniejszym poście). Po tych opracjach może ustawić czas fynkcją:

BOOL SetSystemTime(CONST SYSTEMTIME *lpSystemTime);

której jedynym parametrem jest wskaźnik na przygotowaną wcześniej strukturę.
Warto pamiętać takżę, że czas systemowy jest prechowywany jako UTC (Coordinated Universal Time), a nie jako aktualny czas w danym regionie. Jedynym includem jaki potrzebujesz, żeby to wszystko zrobić jest "windows.h". Mam nadzieję, że to Ci wszystko wyjaśni.

0
ltes napisał(a)

to jest c++ builder?? ty chyba sobie kpisz ze mnie

A co wskazuje na to że to wg Ciebie nie jest BCB??
Bo u mnie to działa jak należy.

0

Nie chodzi mi o ten shit nazywany bcb. Ja programuje w "czystym" c++. Te funkcje co podales to sa z dos.h czy wszxystko jest z vcl.h [???] [???] [???]

0

To co ja Ci napsiałem działa w dowolnym kompilatorze C++ (ja z tego korzystałem w DevCpp), musisz tylko dołączyć plik "windows.h". Żadnych komponentów, czy czegoś takiego. Korzystasz tylko i wyłącznie z WinApi (czyli bezpośrednio z interfesju programistycznego Windows).

0

Z dos.h ale chyba w takiej postaci występuje tylko w kompilatorach Borlanda ;]

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.