Kalendarz, godzina systemowa i Delphi

0

Witam!

Piszę program, który pobiera datę i godzinę systemową.
Problem polega na tym, że jeśli user zmieni "tak dla jaj" datę lub godzinę w systemie to dane w moim programie zaczynają być nieprawidłowe, które opierają się ów na dacie i godzinie.

Czy jest jakiś sposób, aby pomimo zmiany przez usera daty i/lub godziny, w moim programie dalej widniała data i godzina rzeczywista??

Jak takie coś wykonać? Dzięki za wskazóweczki [browar] :)

0

możesz pobierać datę i czas z serwera (np. z serwera SZBD, z serwera czasu, z innego serwera)

0

W tym też rzecz, że program niekoniecznie będzie pracował na kompie z internetem :)
Wymyślę własne samowystarczalne odliczanie czasu i daty :)

0

taa a jak user wyłączy Twój program, albo zmieni datę w DOSie to co wtedy. A serwer wcale nie musi być gdzieś w internecie, może to być też serwer z sieci LAN

0

Chodzi Ci o czas od uruchomienia programu do danej chwili? Proponuje QueryPerformanceFrequency i QueryPerformanceCounter. Wszystko masz tu: Jak zmierzyć czas wykonywania operacji (inny sposób)

0

Chodzi o to że w programie mam tabelę i w niej są kolumny: DATA, GODZINA, IMIĘ, NAZWISKO. Przy wyłączaniu systemu zapisują się odpowiednie dane do tabelki. Dlatego jak np. user przestawi datę i/lub godzinę i potem wyłączy system to zapiszą się do tabelki nieprawdziwe dane, nie zgadzające się z dzisiejszą faktyczną datą (lub godziną).

Dlatego chciałem się dowiedzieć jak zrobić jakies zabezpieczenie, aby user pomimo, że zmienił datę i godzinę w systemie, w moim programie te dane są cały czas prawdziwe. :)

0

No raczej nie

0

no niestety- komputer ma wbudowany wewnętrzny zegar, dzięki któremu nawet po wyłączeniu i włączeniu kompa data jest prawidłowa. Jak użytkownik zmienia czas zegara to zmienia czas wewnętrznego zegara - wiec jeśli komputer nie jest połączony do neta, ani żadnej innej sieci to nie można pobrać godziny... Możesz jednak (choć nie wiem jak ;) ) sprawdzić sobie, czy użytkownik nie zmienił godziny (pewnie jakieś funkcje WINAPI ;P ) i wyświetlic stosowny komunikat...

A chyba nawet nie potrzebne bedzie WINAPI...
Może po prostu daj timera z interwalem, np. 5000 i OnTimer zapamietaj godzinę do jakiejś zmiennej, i sprawdzaj czy jest ona taka sama co godz. z poprzednich 5 sek. (musisz jeszcze oczywiscie te 5s doliczyć ;) ), jeśli tak to git, jak nie to przywracasz starą godzinę( + oczywiście 5s w moim przykładzie)
Jedyny sek tego rozwiązania to to że program musi byc cały czas Runtime (ale skoro twoj program zapisuje jakies dane przy wyłączeniu kompa to chyba jest cały czas włączony(ukryty pewnie)), a jak użytkownik zmieni godzine w Biosie to już w ogóle przekichane...

0

powiem tak - choćbyś na rzęsach zatańczył to bez zewnętrznego źródła czasu nie obejdziesz tego. Jedyne co możesz sprawdzić to czy aktualny czas nie jest mniejszy od ostatnio zapisanego

0

No dokładnie. Niestety tylko to mi pozostaje zrobić.
Albo napisac jakiś komunikat, że przy zmianie czasu lub daty przez usera, program będzie zapisywał nieprawidłowe dane i już :/ Takie jakby ostrzeżenie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1