Hi !
zu meinem Problem:
Ich möchte das der Anwender meines programms die veränderungen sehen kann während der algorithmus durchläuft!
Nur wie kann man es erreichen, wenn ich sleep und co innerhalb der procedure verwende wartet das programm seine zeit und gibt dann das endergebnis aus!
wie kann mann die ausgabe der werte (siehe code KW_dist,pre,R)so gestalten das erst
z.B. die initialisierung dagestellt wird
und dann die weiteren veränderungen!
immer wenn sich was ändert sollte es einem stringgrid übergeben werden
die Aktuellesituation soll auf stringgrid ausgegeben werden.
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: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45:
| procedure Dijkstra_Pfeil ( var pre,kw_dist:TKnoten; var b,c:TPfeil; var PN:TKnoten_plus_1_feld; Knotenzahl:integer; Start:integer;var stringgrid1:Tstringgrid); var locali,localj,min:integer; R:array [1..8] of boolean; begin for locali:=1 to Knotenzahl do begin pre[locali]:=0; stringgrid1.Cells[locali,1]:=inttostr(pre[locali]); kw_dist[locali]:=999; stringgrid1.Cells[locali,2]:=inttostr(kw_dist[locali]); R[locali]:=true; end; kw_dist[Startknoten]:=0; stringgrid1.Cells[locali,2]:=inttostr(kw_dist[startknoten]); R[Startknoten]:=true; while true do begin min:=999; for localj:=1 to Knotenzahl do if R[localj] and (kw_dist[localj] < min) then begin min:=kw_dist[localj]; locali:=localj; end; if min = 999 then exit; for localj:=PN[locali] to PN[locali+1]-1 do if R[b[localj]] or ( kw_dist[b[localj]] = 999 ) then if kw_dist[locali] + c[localj] < kw_dist[b[localj]] then begin kw_dist[b[localj]]:= kw_dist[locali] + c[localj]; pre[b[localj]]:=locali; R[b[localj]]:= True; end; R[locali]:= False; stringgrid1.Cells[locali,1]:=inttostr(pre[locali]); stringgrid1.Cells[locali,2]:=inttostr(kw_dist[locali]); end; end; |
könnt ihr mir helfen?