![]() |
Schleife abbrechen, wenn eine gewisse Website angezeigt wird
Hallo,
Ich mache große Fortschritte mit meinem Programm, jedoch stehe ich einmal wieder vor einer Frage, die ich heute den ganzen Tag versuche zu lösen, aber ihr einfach nicht auf den Grund komme. Die Problematik besteht darin, dass ich eine Schleife beenden will, wenn eine bestimmte Webseite in meinem TWebBrowser aufgerufen wird. Ich habe das Ganze zuerst mit einer repeat until schleife versucht, was ebenfalls scheiterte, somit habe ich es so versucht:
Delphi-Quellcode:
Was aber auch nicht funktioniert, die Schleife läuft einfach 50 mal durch und das wars,
procedure TForm1.Button3Click(Sender: TObject);
Var i : integer; begin i := 0; continue := true; while (i < 50) and continue do begin Application.ProcessMessages; i:=i+1; Application.ProcessMessages; if Webbrowser1.LocationURL = 'http://www.webseite.de/stop.php' then continue := false else begin Application.ProcessMessages; WebBrowser1.Navigate('http://www.webseite.de/profile.php?'+memo1.Lines[memo1.Lines.Count-1]); Application.ProcessMessages; sleep(3000); Application.ProcessMessages; Profil := memo1.Lines[memo1.Lines.Count-1]; Application.ProcessMessages; memo1.Lines.delete(memo1.Lines.Count-1); Application.ProcessMessages; end; Application.ProcessMessages; end; PlaySound('SystemQuestion', 0, SND_ALIAS or SND_ASYNC) ; PlaySound('DeviceConnect', 0, SND_ALIAS or SND_ASYNC) ; end; selbst wenn innerhalb der 50x die "Stop-Seite" kommt, rennt er weiter. Außerdem öffnen sich zwar die Seiten, wobei der TWebBrowser aber nicht aktuallisiert wird, d.h. die erste Seite bleibt stehen (Und die Seiten öffnen sich unsichtbar alle 3 Sekunden). Die Abfrage der Webseite ohne Schleife geht super, z.B. um einen Button zu disablen, daher wundert es mich, dass es in meiner Schleife nicht geht. Bin echt am Verzweifeln und mit meinem latein am Ende, es muss doch einfach irgendwie gehen, dass trotz der Schleife die angezeigte Seite aktuallisiert und bei der Stop - Seite die Schleife beendet wird !? Freue mich auf Antworten, Grüße, - M.S. EDIT: Mit den vielen Application.ProcessMessages; versuche ich , das Programm "nicht hängend" aussehen zu lassen, sodass es refreshed wird während der Schleife sozusagen. |
Re: Schleife abbrechen, wenn eine gewisse Website angezeigt
zuerst einmal würde ich die variable nicht continue nennen...
und dann kannst du dir mal diese procedure anschauen:
Delphi-Quellcode:
und das mit den Application.processmessages sieht echt übel aus xD
procedure WaitForWebBrowser(eWebbrowser: TWebBrowser; Delay: Integer);
begin while (eWebbrowser.ReadyState <> READYSTATE_COMPLETE) and (not Application.Terminated) do begin Sleep(Delay); Application.ProcessMessages; end; end; |
Re: Schleife abbrechen, wenn eine gewisse Website angezeigt
Hat der WebBrowser nicht so ein Ereignis, welches ausgelöst wird nachdem die Seite vollständig geladen wurde?
Ich würde da ansetzen. |
Re: Schleife abbrechen, wenn eine gewisse Website angezeigt
Delphi-Quellcode:
Ausgabe:
procedure TForm1.FormCreate(Sender: TObject);
begin webbrowser1.Navigate('www.web.de'); end; procedure TForm1.Button1Click(Sender: TObject); begin webbrowser1.Navigate('www.google.de'); application.ProcessMessages; form1.Caption := webbrowser1.locationurl ; end; ![]() wenn du mal ein Projekt mit diesen Quellzeilen ablaufen lässt, dann wirst du schnell merken woran das liegt. So wie es aussieht wird die locationURL erst gesetzt, nachdem die Seite komplett geladen ist. --> deine While schleife rennt einfach zu schnell durch. dein Sleep hilft dir hier aber auch nicht, da damit alles einfriert, auch das laden deiner Website. |
Re: Schleife abbrechen, wenn eine gewisse Website angezeigt
Hallo!
Ich habe mein sleep(3000) mal durch die Procedure ersetzt: procedure WaitForWebBrowser Tatsache ist, dass die Webseiten nun tatsächlich laden und angezeigt werden! Vielen Dank! Die Ladezeit ist zwar recht lang, aber es scheint zumindest zu funktionieren ;-). Jetzt muss ich nurnoch das "Stopp" zum Laufen bringen. |
Re: Schleife abbrechen, wenn eine gewisse Website angezeigt
Zitat:
|
Re: Schleife abbrechen, wenn eine gewisse Website angezeigt
Hallo nochmal!
Wollte nur bescheid geben, dass nun - dank der Procedure - Wirklich alles gut läuft. Ich danke Euch allen sehr, sehr, sehr für Eure Hilfe, ohne Euch hätte ich es nicht gepackt! Grüße, und eine schöne Woche, - M.S. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 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