AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Schleife abbrechen, wenn eine gewisse Website angezeigt wird
Thema durchsuchen
Ansicht
Themen-Optionen

Schleife abbrechen, wenn eine gewisse Website angezeigt wird

Ein Thema von Maxisoft2 · begonnen am 4. Feb 2008 · letzter Beitrag vom 5. Feb 2008
Antwort Antwort
Maxisoft2

Registriert seit: 8. Nov 2007
20 Beiträge
 
#1

Schleife abbrechen, wenn eine gewisse Website angezeigt wird

  Alt 4. Feb 2008, 22:28
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:
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.phpthen 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;
Was aber auch nicht funktioniert, die Schleife läuft einfach 50 mal durch und das wars,
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.
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Schleife abbrechen, wenn eine gewisse Website angezeigt

  Alt 4. Feb 2008, 23:26
zuerst einmal würde ich die variable nicht continue nennen...
und dann kannst du dir mal diese procedure anschauen:
Delphi-Quellcode:
procedure WaitForWebBrowser(eWebbrowser: TWebBrowser; Delay: Integer);
begin
  while (eWebbrowser.ReadyState <> READYSTATE_COMPLETE) and (not Application.Terminated) do
    begin
      Sleep(Delay);
      Application.ProcessMessages;
    end;
end;
und das mit den Application.processmessages sieht echt übel aus xD
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Schleife abbrechen, wenn eine gewisse Website angezeigt

  Alt 5. Feb 2008, 07:31
Hat der WebBrowser nicht so ein Ereignis, welches ausgelöst wird nachdem die Seite vollständig geladen wurde?
Ich würde da ansetzen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Noobinator

Registriert seit: 9. Mai 2006
147 Beiträge
 
Delphi 7 Personal
 
#4

Re: Schleife abbrechen, wenn eine gewisse Website angezeigt

  Alt 5. Feb 2008, 09:39
Delphi-Quellcode:
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;
Ausgabe: http://www.web.de

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.
  Mit Zitat antworten Zitat
Maxisoft2

Registriert seit: 8. Nov 2007
20 Beiträge
 
#5

Re: Schleife abbrechen, wenn eine gewisse Website angezeigt

  Alt 5. Feb 2008, 10:05
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.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Schleife abbrechen, wenn eine gewisse Website angezeigt

  Alt 5. Feb 2008, 10:12
Zitat von Maxisoft2:
Ich habe mein sleep(3000) mal durch die Procedure ersetzt: procedure WaitForWebBrowser
Sleep legt ja den Prozess schlafen. Da kann auch kein in deinem Prozess laufender IE (TWebBrowser) weiter laden ...
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Maxisoft2

Registriert seit: 8. Nov 2007
20 Beiträge
 
#7

Re: Schleife abbrechen, wenn eine gewisse Website angezeigt

  Alt 5. Feb 2008, 13:26
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.
  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 13:51 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