Hi,
ach die schönen Türme von Hanoi. Dein sleep legt den Hauptprozess schlafen, dass heißt natürlich auch, dass dieser nicht neu zeichnet. Dein Algorithmus ist also so wie er ist schon vollkommen richtig, aber du solltest in deiner Methode procedure TForm1.Schiebe(n, Turm1, Turm2, Turm3: integer); noch ein Application.ProcessMessages; vor dem sleep einfügen (gibt Rechenzeit frei und damit wird neu gezeichnet).
Ein (wie ich glaube) schönerer Weg ist es dann einfach anders zu warten, statt sleep(500) kannst du auch
Delphi-Quellcode:
var time : Int64;
begin
time := GetTickCount;
while (GetTickCount - time) < 500 do
begin
Application.ProcessMessages;
end;
end;
verwenden, das sollte auf jeden Fall klappen.
Schau einfach mal,
Gruß Der Unwissende
Ps: Nicht schlecht, ich hatte damals (gut, noch Pascal) eine deutlich unschönere Lösung