Witam. Wiem do czego służy ta funkcja, ale mam problem - w kursach <ort>pisze </ort>że "delay(1000);" spowoduje zatrzymanie się programu na sekunde. W rzeczywistości (przynajmniej na moim kompie) trwa to dłużej niż sekunde. Jak ustalić, żeby trwało to idealnie sekunde? Probowałem z mniejszymi wartościami, ale wtedy raz jest szybciej a raz wolniej... Może to zależy od kompa? Jeżeli tak to jak zrobić (obejść to) żeby było to idealna sekunda? Może coś z GetTime i warunkami? Chodzi o to, że mam zrobić odliczanie sekundowe do tyłu;)
Tego nie przeskoczysz. Przerwanie zegarowe jest co 1//55 s (chyba, mogę się strzelić o troszkę). Dlatego pomiar czasu zależy od szybkości procka. Za bardzo nie ominiesz tego.
Jakim kompilatorem sie posługujesz bo jeśli jest to Turbo Pascal to powinnieneś ściągnąć sobie odpowiednią wersje patcha(to jest poprawki na moduł CRT);
czyli jeżeli piszę program dla kogoś to muszę dowiedzieć się o procka i dopiero dopasować tak?
Ja mam procka 1000 ( :/ ) czyli jeżeli ma to trwać około sek to "delay(550)" tak?
Próbowałem z tymi patchami, ale albo nie widać różnicy albo zapi**nicza na maxa;p
a dla procka 2000 jakby bylo?
windows to nie system czasu rzeczywistego - tego się nie da zrobić bez zewnętrznego zegara
Myślę, że wina tego nie stoi po stronie twojego procesora, stoi bardziej po stronie kompilatora itp. W końcu procesor 1 GHz to nie jest aż tak mało. W latach kiedy powstał twój kompilator to było to coś naprawde szybkiego. Ja kiedys na 1.1 GHz grałem w Gothic II i się mało cieło!
@Oleksy_Adam:
raczej 65536 razy w ciągu godziny. pomiar czasu owszem, będzie zależeć od szybkości procesora, ale błąd kilku nanosekund przy pomiarze milisekund jest chyba pomijalny?
@Dawid93:
nie jesteś w stanie poprzez delay odmierzyć równo sekundy, zawsze będziesz mieć błąd +- 9,1ms. Jeśli chcesz precyzyjniejszego pomiaru czasu (z dokładnością do ns) zapraszamy pod windows do np. delphi.
zastanawiałbym się, czy nie jest to wina ze zapewne nie uruchamiasz programu w trybie rzeczywistym. U mnie wszystkie moje programy na procku 2,6 chodzą strasznie wolno, a jeśli włączę w trybie rzeczywistym to program zasuwa. Nawet na 486 100MHz szybciej mi programy chodzą w trybie rzeczywistym niż w emulacji na XP...
// wciśnij num lock w konsoli i zobacz co się stanie - Ł
Autre napisał(a)
W latach kiedy powstał twój kompilator to było to coś naprawde szybkiego.
W latach kiedy powstawał twój kompilator (zakładam, że klasyczny Turbo Pascal), nie istniały jeszcze, taktowane częstotliwością powyżej 233MHz procesory Pentium II.
Wniosek bardzo prosty: zapraszamy do podróży w przyszłość o jakieś ponad 10 lat i używania współczesnych kompilatorów (Free Pascal, Delphi, itp).