Hallo,
wenn ich das richtig verstehe willst du nur die Zwischenschritte anzeigen.
Dafür solltest du in der inneren Schleife dein Programm auffordern, mal eine Pause zu machen um Dinge wie z.B. das Zeichnen des Fensters zu übernehmen. Hierdurch wird dein Algorytmus aber erheblich langsammer. Der Befehl dazu heißt
Application.ProcessMessages in deinem Programm muss das dann so aussehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| procedure TForm2.BitBtn3Click(Sender: TObject); Var z,j,zmax,max:integer; begin Sort.cells[0,2]:='Sortiert'; for z:=10 downto 1 do begin zmax:=z; max:=zahl[z]; Sort.cells[z,2]:=IntToStr(max); for j:=1 to (z-1) do if zahl[j]>max then begin zmax:=j; max:=zahl[j]; Sort.cells[z,2]:=IntToStr(max); Application.ProcessMessages; end; zahl[zmax]:=zahl[z]; zahl[z]:=max; Sort.cells[z,2]:=IntToStr(zahl[zmax]); Sort.cells[z,2]:=IntToStr(zahl[z]); end; end;
end. |
Sollte das ganze dann immer noch zu schnell laufen, so das man es nciht richtig sieht, kannst du noch ein
sleep(250); direckt dahinter setzen. Damit wird nach jedem Durchlauf eine viertel Sekunde gewartet.
Gruß
Klabautermann