AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Problem: die ausgabe soll verzoegert werden
Thema durchsuchen
Ansicht
Themen-Optionen

Problem: die ausgabe soll verzoegert werden

Ein Thema von pagan1900 · begonnen am 19. Jun 2006 · letzter Beitrag vom 20. Jun 2006
Antwort Antwort
pagan1900

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

Problem: die ausgabe soll verzoegert werden

  Alt 19. Jun 2006, 22: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
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Problem: die ausgabe soll verzoegert werden

  Alt 19. Jun 2006, 22:20
Delphi-Referenz durchsuchenApplication.ProcessMessages kann da Wunder bewirken
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
pagan1900

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

Re: Problem: die ausgabe soll verzoegert werden

  Alt 19. Jun 2006, 22:39
was bewirkt Application.ProcessMessages?
die ergebnisse mussten doch einem stringgrid oder so übergeben werden, damit
sich die tabelle je nach der aktuellen lage im algorithmus aktualisiert?
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Problem: die ausgabe soll verzoegert werden

  Alt 19. Jun 2006, 22:50
es bewirkt das die Veränderungen angezeigt werden sozusagen als zwischen status. dementsprechend solltest du diesen Befehl einfügen nachdem du in dein stringgrid schreibst. als alternative wären threads zu nennen
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
pagan1900

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

Re: Problem: die ausgabe soll verzoegert werden

  Alt 19. Jun 2006, 23:02
um wieviel zeit muss mann dann noch verzögern?
oder beinhaltet dieses schon eine "lesbare" verzögerung?
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Problem: die ausgabe soll verzoegert werden

  Alt 19. Jun 2006, 23:29
ach meinst du das wird komplett verändert ? dann würde ich zu delay raten zu finden in der codelib
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
pagan1900

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

Re: Problem: die ausgabe soll verzoegert werden

  Alt 19. Jun 2006, 23:40
der code oben ist der dijkstra algorithmus

und er hatt ja mehere durchläufe (besonders bei schritt 2+3) bis er das energebnis hat
und diese zwischen werte sollen jeweis angezeigt werden bzw die im stringgrid "vorhandenen" werte sollen durch die ermittelten werte "aktualisiert" werden
(das müste doch dann wenn es klapt doch auch analog zu übertragen sein, wenn er die gezeichnete pfeile
durch andersfarbige pfeile ersetzen soll sprich z.B. gerade im angriff genommener pfeil (gelb), dieser pfeil stellt verbesserung da grun...)
im anhang die komplette unit
Angehängte Dateien
Dateityp: pas unit4_732.pas (24,4 KB, 4x aufgerufen)
Dateityp: pas unit4_138.pas (24,4 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Problem: die ausgabe soll verzoegert werden

  Alt 20. Jun 2006, 00:54
naja ist ja realtiv egal wenn du eine bestimmte zeit aussetzen willst dann musst du diese Luckies delay oder Hagens delay einfügen danach fügst du einfach die zeile
delay(100); //bsp 100 = 100 ms am ende bei dir ein

Delphi-Quellcode:
    
    stringgrid1.Cells[locali,1]:=inttostr(pre[locali]);
    stringgrid1.Cells[locali,2]:=inttostr(kw_dist[locali]);
   // Hier
    end; {Ende Schritt 1 und 2}
end;
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz