Czas od włączenia programu

OperativSark
uses dos,crt;
var
  godzina,minuta,sekunda:integer;
begin
  godzina:=0;
  minuta:=0;
  sekunda:=0;

  repeat
    sekunda:=sekunda+1;
      if sekunda=60 then begin
        minuta:=minuta+1;
        sekunda:=0;
      end;

      if minuta=60 then begin
        godzina:=godzina+1;
        minuta:=0;
      end;

   writeln(godzina,':',minuta,':',sekunda);
   delay(1000);            // 1000 to jedna sekunda

  clrscr;
  until godzina=24       // czyli bedzie to powtarzac poki nie minie jeden dzien}
end.

Można też inaczej...
Ciekawy sposób jak to zrobić w kilku linijkach:

var timer : LongInt absolute $40:$6c; 
     start : LongInt;
begin
  start:=timer;

  {a teraz w dowolnym fragmencie kodu}
  WriteLn('Minelo ',((timer-start)/18.2):5:3, 's.');
end.

dlaczego tak się dzieje?
w adresie pamięci $40:$6c znajduje się liczba tyknięć zegara od północy. Tyknięcie następuje co ok. 1/18.2 sek. więc gdy mamy aktualną liczbę tyknięć i liczbę tyknięć na początku programu można wyznaczyć czas w dowolnym momencie, bez korzystania z dodatkowych modułów

10 komentarzy

delay(1000) 1000 = 1s to zależy od procesora według mnie bo pracowałem na bardzo wolnym robiłem to musiałem wpisać bardzo dużą wartość prawie maksymalną by się czas zatrzymał na ułamek sekundy, a na moim 2 rdzeniowym procku wpisałem 60000 to dało mi równe 2 minuty =|

I te komentarze, "}" tam gdzie jest to zbędne

Odnoszę wrażenie, że więcej pisałeś pisałeś w C niż w Pascalu. Charakteryzuje to begin na końcu lini po instrukcji....

Delay moi drodzy nie będzie nigdy dokładnie równę:a mianowicie dlatego że to jest czas PRZYBLIŻONY: znaczy że na innym sprzęcie jest inaczej, a czasem raz trafi się tak, raz tak, przynajmniej tak jest u mnie: testowałem na moim staruszku (jeszcze z 99r. :S) i na nowiuśkim kompie: na nowym 1000 wyglądało jak 0,7 sec, na starszym czasem było tak czasem tak, ogólnie to pomiędzy 0,9-0,7... Artykuł dość dobry, można przynajmniej coś z niego się nauczyć: zwłaszcza z komentarzy :D:D

czy mi się wydaje, czy niepotrzebny jest moduł DOS?;] wybaczcie, że się czepiam, ale jakoś tak mi się w oczy rzuciło;]

brak wcięć, brak formatowania, brak komentarzy, delay(1000) to nie jest równo sekunda... ehh...

I uzywaj tagu delphi

jako że jesteś jeszcze młody, to postaram się być delikatny żeby Cię nie zniechęcić, ale następnym razem:

  1. zrób krótki opis (np. po co to? w jakim języku)
  2. Staraj się wymyślać jakieś ciekawsze tematy, których jeszcze nie było.
  3. stosuj wcięcia i odpowiednio formatuj kod.
    To tyle na wstępie. pozdrawiam.

bez jakiegoś konkretnego opisu to szkoda głowy zawracać, bo niektórzy po samym tytule "czas trwania programu" nie wiele zrozumieją, a to ma być chyba dla każdego

Co prawda według helpa Delay (X) daje dokładnie X milisekund opóźnienia. Ale tak było za czasów 286 :-). Na moim kompie Delay (65000) daje niecałe 750 ms...