Ich scheitere gerade wieder an einer eigentlich total einfachen Sache!
Ich habe ein Eingabefeld in welches man eine Zahl eingibt. z.B. 600 (Sekunden). Das wären dann 10 Minuten.
Zusätzlich habe ich 10 TImages und jedes davon kann 2 Zustände annehmen (2 verschiedene Grafiken).
Nun möchte ich in einem Thread eine Schleife ausführen lassen welche nach und nach von links nach rechts die Zustände der Bilder ändert, und das in 600 Sekunden.
Das mit dem Bilder-wechseln, dem Thread usw klappt alles aber ich bin wohl zu dumm diese 600 Sekunden in Millisekunden umzuwandeln, SODASS
ich eine eigene Schleife mit Sleep(1) verwenden kann statt Sleep(die-ausgerechnete-zeit).
Das soll den Vorteil haben, dass sich das Programm sofort beenden lässt und nicht erst in einer Sleep(1000) oder so festhängt.
Versteht ihr mein Problem?
Ich dachte eigentlich es ginge so:
Delphi-Quellcode:
dTmp := StrToIntDef(Edit1.Text, 600); // Single
iMaxImgLifetime := Round(dTmp * 100); // Integer
iMaxImgLifetime := iMaxImgLifetime * 2; // *2 weil jedes der 10 Bilder 2 Zustände haben kann (Voll und Halb)
Meine Sleep-Schleife sieht echt mies aus (die wird in jedem Schleifendurchgang im Thread aufgerufen):
Delphi-Quellcode:
procedure doSleep(iSleep: Integer);
var
i: Integer;
begin
i := 0;
while i < iSleep do
begin
Inc(i);
Sleep(1);
end;
end;