Einzelnen Beitrag anzeigen

eliciel

Registriert seit: 17. Okt 2008
5 Beiträge
 
#1

webseiten durchsuchen + neu laden

  Alt 12. Sep 2009, 02:43
hallo zusammen,

ich versuche zur zeit ein programm zum laufen zu kriegen, welches eine seite laedt, sie nach einem string durchsucht (falls gefunden, eintrag in einer listbox) und dann neulaedt.

arbeite ich mit OnDocumentComplete, laeuft der aktualisierungsvorgang sehr schnell durch, jedoch "verschluckt" er ab und zu treffer und er speichert nichts in der listbox.

arbeite ich mit einem timer und frage den seitenstand ab mit ReadyState(=4), verschluckt er die treffer ebenso haeufig.

ich moechte, dass der aktualisierungsvorgang so schnell wie moeglich durchgefuehrt wird, ohne dass irgendwelche treffer verschluckt werden, allerdings hab ich das bisher nur realisieren koennen mit entsprechend hohem timer-interval.

aus welchem grund fuehrt er den code unter OnDocumentComplete manchmal nicht aus? es scheint, als wuerde die seite schneller neuladen als er den code ausfuehren kann, wobei der code dann uebersprungen und nicht mehr ausgefuehrt wird und ein neues OnDocumentComplete von vorn beginnt. warum tut er das?

Delphi-Quellcode:
function suchetext(WB: TWebBrowser; Text: string): boolean ;
var
   tr: IHTMLTxtRange;
begin
   if Assigned(WB.Document) then
   begin
     tr := ((wb.Document AS IHTMLDocument2).body AS IHTMLBodyElement).createTextRange;
     if tr.findText(Text, 1, 0) then result := true else result := false;
   end;
end;


procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  if suchetext(webbrowser1, 'text') then listbox1.items.add('treffer!');
  // hier stehen noch mehr abfragen, die die prozedur wohl etwas verlangsamen
  webbrowser1.navigate('http://localhost/');
end;

die suchetext - funktion hab ich irgendwo beim googlen mal gefunden, in anderem zusammenhang (woerter suchen und farblich markieren).. ich hoffe, ich benutz die hier richtig?
  Mit Zitat antworten Zitat