Avatar billede thecokeguy Nybegynder
15. oktober 2004 - 01:35 Der er 8 kommentarer og
1 løsning

Forsinkelse i en løkke

Hvordan laver man en forsinkelse i en løkke f.eks:

FOR i := 1 TO 100 DO
BEGIN
  Funktion(i);
  Forsinkelse på 1/10 sekund
END;

"Jeg ønsker ikke at bruge en timer"

Jeg takker på forhånd for deltagelsen...
Avatar billede Syska Mester
15. oktober 2004 - 01:37 #1
øhh, en løkke mere der ca. tager 1/10 sek, mem hvorfor ikke bruge en timer?
Avatar billede thecokeguy Nybegynder
15. oktober 2004 - 01:41 #2
Fordi jeg gerne vil have det i kode, da jeg er en af de mennesker, der hellere vil skrive to siders kode, frem for at bruge to komponenter.

...Jeg ville bare høre om der er en funktion i Delphi til formålet
Avatar billede Syska Mester
15. oktober 2004 - 01:46 #3
Tror ikke, men hvis den kan tæller micro sekunder, kan du jo lave en while der kører indtil indtil der er gået den tid.

Men jeg er så nok en af de mennesker der ikke helt kan forstå hvorfor man ikke bruge de komponenter der allerede er lavet, hvis man kan spare en masse, og det er gennemtestet. :-P
Avatar billede thecokeguy Nybegynder
15. oktober 2004 - 01:54 #4
While vil jeg nødigt bruge, da jeg af erfaring har set det sløve processen. Men flg. virker perfekt:

procedure Delay(Msecs : Integer);
var
  FirstTickCount : LongInt;
begin
  FirstTickCount := GetTickCount;

  repeat
    Application.ProcessMessages;
    Sleep(1);
  until ((GetTickCount - FirstTickCount) >= LongInt (Msecs));
end;

...Endnu engang er grunden til at jeg gerne laver mine programmer "besværlige" nok min endeløse nysgerrighed for hvordan det fungerer. -Men jeg takker for dit forsøg.
Avatar billede stoney Nybegynder
15. oktober 2004 - 08:47 #5
Kunne du ikke bare sige
sleep(100)

Tallet angiver millisekunder.

Stoney
Avatar billede Syska Mester
15. oktober 2004 - 11:52 #6
han vil selv lave noget
Avatar billede pellelil Nybegynder
15. oktober 2004 - 21:56 #7
For lige at give mit B7, så er stoney's forslag det mindst CPU krævende. Sleep(100) fortæller styresystemet at dit program ikke skal have CPU-tid i de næste 100 ms.
Avatar billede thecokeguy Nybegynder
15. oktober 2004 - 23:42 #8
Ja, sleep(100) er godt nok den mindst krævende, men den har den bivirkning at formen fryser fast på skærmen til tiden er gået, og det var jeg ikke interesseret i.
Avatar billede eht Nybegynder
28. oktober 2004 - 00:39 #9
Jeg plejer at bruge denne kode

procedure Delay(ms: longint);
var
  TheTime: LongInt;
begin
  TheTime := GetTickCount + ms;
  while GetTickCount < TheTime do Application.ProcessMessages;
end;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester