Avatar billede armena Nybegynder
22. marts 2003 - 20:02 Der er 5 kommentarer og
2 løsninger

Loops

Jeg er igang med at læse "Sams Teach yourself Borland Delphi 4 in 21 days" og jeg er noget til Loops.

Faktisk har jeg læst Loops afsnittet (Dag 2) igennem. Men nu er jeg så i tvivl om hvordan man gøre dette:
Jeg har en TButton på min form og vil gerne have at den caption ændre sig hvert sekund (med timer self.).

Fx. til:
5
4
3
2
1
0

Har prøvet sådan:
var
  I : Integer;
  X : Integer;
begin
  X := 5;
  X := X -1;
  for I := 0 to 5 do begin
    Button1.Caption :=''+IntToStr(X);
  end;
end;

Men det virker ikke. Hvad gør jeg forkert? Og hvordan gøre jeg det rigtigt?

Vil gerne vide hvordan, før jeg går videre til Dag 3 i bogen :)

MVH.
ALA
Avatar billede armena Nybegynder
22. marts 2003 - 20:03 #1
Hov stave fejl:
"..og jeg er noget til Loops." skal self. være "..og jeg er nået til Loops." ;)
Avatar billede r9 Nybegynder
22. marts 2003 - 20:07 #2
prøv:

var
  I : Integer;
begin
I := 0;
  for I := 0 to 5 do
begin
    Button1.Caption :=''+IntToStr(I);
  end;
end;
Avatar billede razersedge Nybegynder
22. marts 2003 - 20:07 #3
Du skal huske at du bruger I til at tælle med, derfor er det også I som ændres, skift derfor IntToStr(X) ud med IntToStr(I);

En anden ting er at hvert trin i den loop ikke tager et sekund, men den tid det tager for computeren at køre koden i loopen igennem; derfor meget hurtigt.

En sidste ting, du skriver du vil have den til at tælle ned, derfor skal du istedet for to bruge downto.
Eksempel:

var
  I : Integer;
begin
  for I := 5 downto 0 do begin
    Memo1.Lines.add(IntToStr(I));
  end;
end;
Avatar billede arne_v Ekspert
22. marts 2003 - 20:08 #4
Der er ikke noget galt med din for loop, men du skal vel
have bygget et 1 sekunder wait ind i den løkke !?
Avatar billede armena Nybegynder
22. marts 2003 - 20:19 #5
Min button's caption bliver bare 0 når timeren køre. Hvad gøre jeg for at den bliver 5,4,3,2,1,0 ?
Avatar billede armena Nybegynder
22. marts 2003 - 20:34 #6
Har fået det til at virke:
var
I : Integer;
begin
  I := 0;
  for I := 5 downto 0 do
  begin
    Button1.Caption :=''+IntToStr(I);
    Sleep(1000);
end;
end;
Avatar billede nop Nybegynder
26. marts 2003 - 09:25 #7
Den her procedure bruger jeg selv til at sætte vent ind, den har den fordel at tastetryk og musse-flyt/tryk events udføres selv under vent, er god til fx "annuller"-knap som altså er aktiv under vent alligevel.
Husk: uses forms;

procedure delay(s: real);
//vent sekunder, fx 0.01 = 1/100 del
var
    dt:  TdateTime;
begin
    if s<>0 then begin
        dt:=now+s/(24*3600);
        while now < dt do application.ProcessMessages;
    end;
end; //delay
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