Einzelnen Beitrag anzeigen

pagan1900

Registriert seit: 27. Mär 2006
25 Beiträge
 
#1

Problem: die ausgabe soll verzoegert werden

  Alt 19. Jun 2006, 23:17
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?
  Mit Zitat antworten Zitat