![]() |
Repeat-Schleife endet nach application.ProcessMessages?
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:
Ich hoffe ihr konntet meiner Erklärung folgen.
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; Woran liegt das? Ich möchte bitte keine Antworten, wie z.b.: leg doch die Timer anders. mfg gandime |
Re: Repeat-Schleife endet nach application.ProcessMessages?
Bis du sicher, daß er nicht auswertet?
BTW.:Lass mal die überflüssigen begin..end innerhalb der Repeat..Until weg |
Re: Repeat-Schleife endet nach application.ProcessMessages?
Hi,
deine Repeat heißt: Wiederhole [Code] solange I größer als 200 ist. Mach aus dem > ein < ;) |
Re: Repeat-Schleife endet nach application.ProcessMessages?
Zitat:
|
Re: Repeat-Schleife endet nach application.ProcessMessages?
:wall:
Stimmt, Entschuldigung :stupid: |
Re: Repeat-Schleife endet nach application.ProcessMessages?
In C-basierten Sprachen heißt es do - while, d.h. da gibt es eine Laufbedingung, bei repeat - until ist das eine Abbruchbedingung :warn:
|
Re: Repeat-Schleife endet nach application.ProcessMessages?
kommt auf das selbe hinaus wenn ich der begin und end weg lasse
außerdem funktioniert es wenn "nur" einmal nav aufgerufen wird! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:03 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