![]() |
GetTickCount
Ich habe folgendes geschrieben:
Delphi-Quellcode:
An der Stelle wo das Programm die oben genannte Prozedur aufruft, bleibt es einfach stehen und man kann darin nichts mehr machen. Wie muss man mit "GettickCount" umgehen?
procedure TForm1.trash;
var start:longint; i:integer; begin repeat start:=gettickcount; if start+50=gettickcount then image4.picture.LoadFromFile('.\pics\trash_open1.bmp'); if start+100=gettickcount then image4.Picture.loadfromfile('.\pics\trash_open2.bmp'); if start+150=gettickcount then image4.Picture.LoadFromFile('.\pics\trash_blum.bmp'); if start+2150=gettickcount then image4.Picture.loadfromfile('.\pics\trash.bmp'); inc(i); until i=10; end; |
Re: GetTickCount
Wie wäre es, wenn du statt dem = ein <= nimmst? So wie es jetzt ist, geht das nur, wenn der Computer es exakt in der richtigen Millisekunde schafft.
EDIT: Der Fehler liegt noch wo ganz anders. Du musst es so machen:
Delphi-Quellcode:
procedure TForm1.trash;
var start:longint; i:integer; begin repeat start:=gettickcount; repeat Application.ProcessMessages until GetTickCount>=start+50; image4.picture.LoadFromFile('.\pics\trash_open1.bmp'); repeat Application.ProcessMessages until GetTickCount>=start+100; image4.Picture.loadfromfile('.\pics\trash_open2.bmp'); repeat Application.ProcessMessages until GetTickCount>=start+150; image4.Picture.LoadFromFile('.\pics\trash_blum.bmp'); repeat Application.ProcessMessages until GetTickCount>=start+250; image4.Picture.loadfromfile('.\pics\trash.bmp'); inc(i); until i=10; end; |
Re: GetTickCount
Zitat:
|
Re: GetTickCount
Application.ProcessMessages ist in diesem Fall nur ein Füller und heißt so viel wie "nichts tun bis 50 ms um sind."
Da ruckelt absolut gar nix. So wie du das gemacht hast, geht er das durch: start:=GetTickCount; //also ist start der Anfangswert if start+50=GetTickCount... //Hier ist höchstens eine Millisekunde vergangen, also ist die Bedingung nicht erfüllt und so geht das auch bei den anderen Bedingungen. Du musst praktisch WARTEN bis die 50 ms um sind, und das passiert bei meinem Code. |
Re: GetTickCount
Zitat:
füge mal ein i:=0 vor repeat ein.... |
Re: GetTickCount
Zitat:
Dat inner Schleife und die Anwendung friert für die Dauer der Schleife nicht ein. //Edit: roter Kasten, ick vermiss dir.. :zwinker: |
Re: GetTickCount
Zitat:
|
Re: GetTickCount
Zitat:
|
Re: GetTickCount
Jetzt tu mir nen Gefallen und benutze diesen Code. Einfach ausprobieren, bevor du mögliche Fehler kritisierst. Nebenbei würde ich die Bilder eher in eine ImageList laden, die Dinger 16 mal in der Sekunde aus der Datei zu laden ist ineffizient.
EDIT: Was meinst du, wie ein Timer funktioniert? Das ist nichts anderes als GetTickCount schön in ne Klasse verpackt.
Delphi-Quellcode:
procedure TForm1.trash;
var start:longint; i:integer; begin i:=0; repeat start:=gettickcount; repeat Application.ProcessMessages until GetTickCount>=start+50; image4.picture.LoadFromFile('.\pics\trash_open1.bmp'); repeat Application.ProcessMessages until GetTickCount>=start+100; image4.Picture.loadfromfile('.\pics\trash_open2.bmp'); repeat Application.ProcessMessages until GetTickCount>=start+150; image4.Picture.LoadFromFile('.\pics\trash_blum.bmp'); repeat Application.ProcessMessages until GetTickCount>=start+250; image4.Picture.loadfromfile('.\pics\trash.bmp'); inc(i); until i=10; end; |
Re: GetTickCount
Zitat:
Den Code hab ich ausprobiert und es ruckelt, das hats bei den 4 timern für jedes bild nich getan. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz