Dies ist wahrscheinlich eine recht dumme Art und Weise um das Problem zu klären, aber eine Bessere fällt mir nicht ein.
Das ist tatsächlich keine allzu gute Option
Angst vor Systemabstürzen musst du keine haben, aber die Lösung ist schon sehr "dirty".
Threads wären genau das richtige, allerdings benötigt man dafür schon etwas Hintergrundwissen. Eine andere Möglichkeit, damit das Programm zumindest nicht vollständig einfriert, ist folgendes: Probier mal Application.ProcessMessages aus:
Delphi-Quellcode:
for i := 0 to 100 do
begin
Sleep(1000);
Application.ProcessMessages;
end;
Dies veranlasst, dass alle anstehenden Messages verarbeitet werden, bevor die Schleife fortgeführt wird. So ließe sich sogar eine "Abbrechen"-Funktionalität basteln.
Übrigens: ein Timer hat nur eine Auflösung von einigen MS im zweistelligen Bereich, d.h. wenn du das Intervall auf 1 ms stellst, dann wird das Timer-Event gar nicht jede MS getriggert sondern nur alle 15 oder 20