Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi problem mit schleife (https://www.delphipraxis.net/106776-problem-mit-schleife.html)

o0o 16. Jan 2008 14:58


problem mit schleife
 
hi leutz,...also ich habn problem mit ner schleife^^
ich weiss nicht wieso aber die schleife laeuft mal 3x durch und mal 2x immer unterschiedlich und dann hoert es weiss gott wieso auf weiterzumachen 0_o
das programm haengt nicht oder so aber es hoert einfach auf mitten in der schleife ohne fehlermeldung.

so habe ich meine schleife gestalted:
Delphi-Quellcode:
var i: integer;
  doc: IHTMLDOCUMENT2;
  url: String;
begin
for i:=0 to 10 do
  begin
    delay(75000);
    IdHTTP1.HandleRedirects := True;
  url := 'http://www.sanook.com/xxx';
  doc := GetDocument(IdHttp1.Get(url)) as IHTMLDocument2;
  ExtractLinks(doc, memo2.lines);//links extrahieren
  delay(200);
  findlinks('http://www.sanook.com/xxx', false);//best. links finden

 nummer:=nummer+1;
 label2.caption:=inttostr(nummer);//durchlaeufe zaehlen

  embeddedwb1.navigate(listbox1.items[0]);
embeddedwb2.navigate(listbox1.items[1]);
embeddedwb3.navigate(listbox1.items[2]);
embeddedwb4.navigate(listbox1.items[3]);
listbox1.clear;
memo2.clear;

        Application.ProcessMessages;
  end;
also ich weiss beim besten willen nicht weiter,..waere nice wenn sich jemand mal kurz gedanken machen koennte wieso das so ist wie es ist^^

thx im vorraus

da o0o

btw was mir aufgefallen ist ich hab im taskmanager geguggt und sah dass die groesse vom programm durch das stehenbleiben der schleife immer weiter und weiter angestiegen ist 0_o (beim 3fachen groesse hab ich beendet)

1234588 16. Jan 2008 15:14

Re: problem mit schleife
 
delay(75000) wuerde ich nicht unbedingt verwenden. stattdessen kannst du ja einen timer mit dem interval 75000 verwenden.

//edit
imho sind das 75 sekunden wo das programm still steht

taaktaak 16. Jan 2008 15:31

Re: problem mit schleife
 
Moin, Moin,
kein Ahnung ob das mit dem Abbruch zu tun hat: Aber nach dem ersten Durchgang wird der Inhalt von ListBox1 gelöscht, soll aber wohl in den nächsten Durchläufen wieder genutzt werden (wozu?, keine Ahnung) - da ist aber nix mehr drin in der ListBox1! Was ist der tiefere Sinn dessen?
Gruß Ralph

semo 16. Jan 2008 15:37

Re: problem mit schleife
 
(1) formatiere deinen code mal ein wenig lesbarer...

Delphi-Quellcode:
var i: integer;
  doc: IHTMLDOCUMENT2;
  url: String;
begin
  for i:=0 to 10 do
  begin
    delay(75000);
    IdHTTP1.HandleRedirects := True;
    url := 'http://www.sanook.com/xxx';
    doc := GetDocument(IdHttp1.Get(url)) as IHTMLDocument2;
    ExtractLinks(doc, memo2.lines);//links extrahieren
    delay(200);
    findlinks('http://www.sanook.com/xxx', false);//best. links finden

    nummer:=nummer+1;
    label2.caption:=inttostr(nummer);//durchlaeufe zaehlen

    embeddedwb1.navigate(listbox1.items[0]);
    embeddedwb2.navigate(listbox1.items[1]);
    embeddedwb3.navigate(listbox1.items[2]);
    embeddedwb4.navigate(listbox1.items[3]);
    listbox1.clear;
    memo2.clear;

    Application.ProcessMessages;
  end;
end;
(2) wenn du im 1. aufruf listbox1.clear(); aufrufst und im 2. durchlauf auf listbox1.Items[0] zugreifst, kann das nicht gut gehen.
oder was passiert in den methoden extractlinks oder findlinks?

(3) einen timer kann ich dir auch empfehlen. oder es gibt auch ein event des embedded webbrowser, das dir mitteilt wnan eine seite fertig geladen ist, wenn du dies benötigst...

DeddyH 16. Jan 2008 15:39

Re: problem mit schleife
 
Wieso soll das eigentlich 12 1/2 Minuten dauern? Gibt es da einen bestimmten Grund für?

o0o 16. Jan 2008 15:48

Re: problem mit schleife
 
sry habs nicht so mit dem code formatieren^^

ok ich werde jetzt mal alles in einen timer setzen und schauen was passiert...
btw zur listbox,...ja mit extractlinks wieder aufgefuellt...solange waehrend dem prozess nix durcheinander geschmissen wird sollte das klappen^^

hab selbst ausprobiert indem ich es per hand einige male aufgerufen habe.

der embeddedeb funkt genauso wieder der twebbrowser,...dh man kann schon drauf zugreifen ob die site geladen ist nur normal wenn die 75sec eingehalten werden reicht das vollkommen aus:)

Zitat:

Wieso soll das eigentlich 12 1/2 Minuten dauern? Gibt es da einen bestimmten Grund für?
hmm das ist eigendlich nur zum testen jetzt,...eigendlich soll das teil wenns fertig ist den ganzen tag laufen(will damit einige info's ueberwachen ohne staendig selbst nachzuschauen^^)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 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