Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi delay problem! (https://www.delphipraxis.net/3517-delay-problem.html)

Luckie 17. Mär 2003 15:09

Schon mal an einen Timer gedacht?

Geht wunderbar:
Delphi-Quellcode:
procedure delay(msec:longint);
var
  start,stop:longint;
begin
  start := gettickcount;
  repeat
    stop := gettickcount;
    application.processmessages;
  until (stop - start ) >= msec;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
begin
  for i := 0 to 60 do
  begin
    Application.ProcessMessages;
    Label1.Caption := IntToStr(i);
    Delay(1000);
  end;
end;
Bzw. so wie du es willst:
Delphi-Quellcode:
procedure delay(msec:longint);
var
  start,stop:longint;
begin
  start := gettickcount;
  repeat
    stop := gettickcount;
    application.processmessages;
  until (stop - start ) >= msec;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i, calc : Integer;
begin
  calc := 61;
  for i := 0 to 60 do
  begin
    Application.ProcessMessages;
    Dec(calc);
    Label1.Caption := IntToStr(calc);
    Delay(1000);
  end;
end;
Oder so:
Delphi-Quellcode:
procedure delay(msec:longint);
var
  start,stop:longint;
begin
  start := gettickcount;
  repeat
    stop := gettickcount;
    application.processmessages;
  until (stop - start ) >= msec;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
begin
  for i := 60 downto 0 do
  begin
    Application.ProcessMessages;
    Label1.Caption := IntToStr(i);
    Delay(1000);
  end;
end;

smax 17. Mär 2003 15:17

Ja der soll aber anzeigen wie viele Sekunden er NOCH drauch!

Luckie 17. Mär 2003 15:18

*push* *pop*

Kuck dir noch mal die zwei anderen Code-Schnipsel an.

smax 17. Mär 2003 15:21

Mhh dann steht aber nur da:

Noch -1 Sekunde

Luckie 17. Mär 2003 15:24

Ist getestet und bei mir zählt er brav runter. Poste mal, was du jetzt hast.

smax 17. Mär 2003 15:39

procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
if Edit1.Text < '1' then Application.MessageBox('Sie müssen eine Zahl eingeben die größer als 0 ist!','Fehler',16);
for i:=60 downto 0 do;
begin
Application.ProcessMessages;
panel1.caption:='Noch ' + IntToStr(i) + ' Sekunden';
delay(1000);
end;
end;

Luckie 17. Mär 2003 15:59

Frag mich bitte nicht, was da los ist. Meiner geht, deiner nicht:
Delphi-Quellcode:
procedure delay(msec:longint);
var
  start,stop:longint;
begin
  start := gettickcount;
  repeat
    stop := gettickcount;
    application.processmessages;
  until (stop - start ) >= msec;
end;

// smax
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
for i:= 60 downto 0 do;
begin
Application.ProcessMessages;
panel1.caption:='Noch ' + IntToStr(i) + ' Sekunden';
Delay(1000);
end;
end;

// Luckie
//procedure TForm1.Button1Click(Sender: TObject);
//var
//  i : Integer;
//begin
//  for i := 60 downto 0 do
//  begin
//    Application.ProcessMessages;
//    Panel1.Caption := 'Noch '+IntToStr(i)+' Sekunden';
//    Delay(1000);
//  end;
//end;
Aus irgendeinen Grund wird bei dir Delay nicht richtig ausgeführt.

sakura hat den Unterschied gefunden: Mach das Semikolon nach dem do mal weg. :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:10 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz