AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Repeat-Schleife endet nach application.ProcessMessages?
Thema durchsuchen
Ansicht
Themen-Optionen

Repeat-Schleife endet nach application.ProcessMessages?

Ein Thema von gandime · begonnen am 10. Jul 2007 · letzter Beitrag vom 10. Jul 2007
 
gandime
(Gast)

n/a Beiträge
 
#1

Repeat-Schleife endet nach application.ProcessMessages?

  Alt 10. Jul 2007, 18:42
Hi,
ich habe ein ganz komisches Problem!
Die Repeat-Schleife, sowie die gesamte Funktion wir bei mir nach "application.ProcessMessages;" beendet.
Ich habe extra einmal überall Break-Points gesetzt aber es sieht so aus als ob die gesamte Funktion mit der Übergeordneten Procedure beendet wurde.
Mein Code:
Delphi-Quellcode:
var
  b_nav_inuse:boolean;

procedure Tfrm_oberflaeche.nav(s_url,s_frame:string);// es werden zwei nav Proceduren ausgelöst mit nahe zu keine Zweitverzögerung (durch zwei Timer)
//Befehle: nav('die url','h'); sind zwar unterschiedliche urls aber der Frame is der selbe
var
  ov: OleVariant;
  i:integer;
begin
  if (b_nav_inuse=true) then //hier wird geguckt ob die Procedure gerade benutzt wird
  begin
    i:=0;//der zweite nav aufruf landet hier und wartet halt^^
    repeat
    begin
      sleep(50);
      i:=i+1;
      application.ProcessMessages;
    end;
    until (i>200);//er wartet auch noch wenn der erste nav aufruf "im nichts gelandet is"
    nav(s_url,s_frame);
  end
  else
  begin
    b_nav_inuse:=true;//der erste nav aufruf landet hier ;-)
    if (s_frame='b') then
    begin
      web.Navigate(s_url);
      if (web_wait(true)=false) then
      begin
        b_nav_inuse:=false;
        nav(s_url,s_frame);
      end;
    end
    else
    if (s_frame='h') then
    begin
      web.Navigate(s_url,'','Hauptframe',ov);
      if (web_wait(false)=false) then//bis dann diese Funktion aufgerufen wird -siehe unten weiter-
      begin
        b_nav_inuse:=false;
        nav(s_url,s_frame);
      end;
    end
    else
    if (s_frame='i') then
    begin
      web.Navigate(s_url,'','Inhalt',ov);
      if (web_wait(false)=false) then
      begin
        b_nav_inuse:=false;
        nav(s_url,s_frame);
      end;
    end;
    b_nav_inuse:=false;
  end;
end;

function Tfrm_oberflaeche.web_wait(b_main:boolean):boolean;
var
  i:integer;
begin
  i:=0;
  repeat
  begin
    i:=i+1;
    sleep(50);
    application.ProcessMessages;//es geht dann normal weiter bis dann hier Ende ist
  end;
  until (i>10);//es wird nichtmal Until überprüft/ausgelöst
  if (b_main=true) then//hier auch nichts sowie der gesamte folgende Code
  begin
    repeat
    begin
      i:=i+1;
      sleep(50);
      application.ProcessMessages;
    end;
    until (s_web='main') or (i>200);
    if (s_web='main') then
    begin
      result:=true;
    end
    else
    begin
      result:=false;
    end;
  end
  else
  begin
    repeat
    begin
      i:=i+1;
      sleep(50);
      application.ProcessMessages;
    end;
    until (s_web='sub') or (i>200);
    if (s_web='sub') or (s_web='main') then
    begin
      result:=true;
    end
    else
    begin
      result:=false;
    end;
  end;
end;
Ich hoffe ihr konntet meiner Erklärung folgen.
Woran liegt das?
Ich möchte bitte keine Antworten, wie z.b.: leg doch die Timer anders.


mfg
gandime
  Mit Zitat antworten Zitat
 


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 08:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz