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
die initialisierung dagestellt wird
dann die weiteren veränderungen!
die Aktuellesituauin soll auf stringgrid ausgegeben werden.
Delphi-Quellcode:
procedure Dijkstra_Pfeil ( var pre,kw_dist:TKnoten; var b,c:TPfeil;{Endknotennummernvektor, Bewertungsvektor}
var PN:TKnoten_plus_1_feld; {Pfeilnummernvektor}
Knotenzahl:integer; Start:integer;var stringgrid1:Tstringgrid); {Anzahl Knoten}
var locali,localj,min:integer;
R:array [1..8] of boolean;
begin
//Initialisierung
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 {Wiederholung Schritt 1 + 2}
begin
//Schritt 2
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;
//Schritt 3
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; {Ende Schritt 1 und 2}
end;
könnt ihr mir helfen?