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
Antwort Antwort
gandime
(Gast)

n/a Beiträge
 
#1

Repeat-Schleife endet nach application.ProcessMessages?

  Alt 10. Jul 2007, 19: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
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Repeat-Schleife endet nach application.ProcessMessages?

  Alt 10. Jul 2007, 19:52
Bis du sicher, daß er nicht auswertet?
BTW.:Lass mal die überflüssigen begin..end innerhalb der Repeat..Until weg
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Repeat-Schleife endet nach application.ProcessMessages?

  Alt 10. Jul 2007, 19:53
Hi,

deine Repeat heißt:

Wiederhole
[Code]
solange I größer als 200 ist.

Mach aus dem > ein <
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Repeat-Schleife endet nach application.ProcessMessages?

  Alt 10. Jul 2007, 19:57
Zitat von Die Muhkuh:
Hi,

deine Repeat heißt:

Wiederhole
[Code]
solange I größer als 200 ist.

Mach aus dem > ein <
Nein ist doch ne Repeat..Until und keine While-Schleife
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Repeat-Schleife endet nach application.ProcessMessages?

  Alt 10. Jul 2007, 19:57


Stimmt, Entschuldigung
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.616 Beiträge
 
Delphi 12 Athens
 
#6

Re: Repeat-Schleife endet nach application.ProcessMessages?

  Alt 10. Jul 2007, 19:59
In C-basierten Sprachen heißt es do - while, d.h. da gibt es eine Laufbedingung, bei repeat - until ist das eine Abbruchbedingung
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
gandime
(Gast)

n/a Beiträge
 
#7

Re: Repeat-Schleife endet nach application.ProcessMessages?

  Alt 10. Jul 2007, 21:56
kommt auf das selbe hinaus wenn ich der begin und end weg lasse
außerdem funktioniert es wenn "nur" einmal nav aufgerufen wird!
  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 00:41 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