Autor |
Beitrag |
tckids
Hält's aus hier
Beiträge: 3
|
Verfasst: Mi 12.10.11 07:03
Hallo !
Ich bin ein absoluter Neuling was Delphi betrifft und beschäftige mich derzeit mit einfach gehaltenen Sachen, nun jetzt hab ich mir einen Webbrowser mithilfe der Twebbrowser komponente gebastelt, komme aber bei einer Sache nicht wirklich weiter.
Mein Problem ist folgendes:
Ich möchte meinen Browser nur auf eine von mir vorgegebene Seite navigieren lassen, dies soll solange der Fall sein bis diese Seite komplett aufgerufen wurde, das Programm soll später in meinen Autostart, somit kann es passieren das ich bei der Ausführung des Programmes noch kein Zugang zum Internet hab und das erste Navigations kommando in einem "Seite nicht gefunden endet" und dort feststeckt.
Jetzt möchte ich gerne einen 5 Sekunden Timer auf folgende procedure setzen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.titlechange(Sender: TObject; const Text: WideString); begin if Text = 'Untitled Document' then begin StaticText1.Visible := False; end else webbrowser1.Navigate('http://meineurl.de'); end; |
Dies überprüft soweit ich es richtig gemacht habe den Titel der Webseite, ist der Titel nicht "Untitled Document" navigiere erneut.
Jetzt verstehe ich aber beim besten willen nicht wie ich das in einen Timer bekomme ?
Vielen dank schonmal für jegliche hilfe! Moderiert von Narses: Topic aus Sonstiges (Delphi) verschoben am Mi 12.10.2011 um 11:48
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mi 12.10.11 08:17
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.OnTimer(Sender: TObject); begin if webbrowser1.Title = 'Untitled Document' then begin StaticText1.Visible := False; end else webbrowser1.Navigate('http://meineurl.de'); end; |
Ich habe einfach nur die Funktion so umgebaut, dass sie das .Text nichtmehr verwendet. Ich hab dabei einfach mal angenommen, dass Text der Title vom Webbrowser ist. Ich vermute weiterhin, dass man den auch anders auslesen kann.
Btw: Stimmt das so? Du tust ja so immer dann neu laden, wenn der Titel NICHT 'Unititled' ist. Sollte es nicht genau umgekehrt sein?
Wenn du dann einmal die richtige Seite erhalten hast, solltest du den Timer abschalten (Timer.Enabled)
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Für diesen Beitrag haben gedankt: tckids
|
|
tckids 
Hält's aus hier
Beiträge: 3
|
Verfasst: Mi 12.10.11 09:27
Ja das ist soweit richtig, ich möchte solange der Titel der Webseite NICHT "Untitled Document" ist, die Seite neu laden / den Navigationsbefehl erneut senden.
Habe den von Dir angebotenen Code gleich mal ausprobiert, bekomme beim erzeugen den Fehler: Undefinierter Bezeichner: 'Title'
Kannst du mir weiterhelfen was ich tun muss?
Vielen Dank!
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 12.10.11 09:33
Wäre es nicht sinnvoller das Ereignis OnDocumentComplete oder wie das heißt, vom Webbrowser zu nehmen und sich vom Webbrowser benachrichtigen zu lassen alls ständig zu überprüfen, ob er die Seite fertig geladen hat?
Für diesen Beitrag haben gedankt: tckids
|
|
tckids 
Hält's aus hier
Beiträge: 3
|
Verfasst: Mi 12.10.11 09:35
Hallo,
daran hatte ich auch gedacht, ich hatte es auch schon eingebaut, aber dann ist mir aufgefallen, dass eine Error Page anstatt der eigentlichen Page die aufgerufen werden soll genauso "OnDocumentComplete" ausloest.
Es gibt allerdings noch OnNavigationError, da weiss ich aber leider nicht wie ich das einzusetzen habe.
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 12.10.11 11:50
Moin und  in der EE!
tckids hat folgendes geschrieben : | das Programm soll später in meinen Autostart, somit kann es passieren das ich bei der Ausführung des Programmes noch kein Zugang zum Internet hab und das erste Navigations kommando in einem "Seite nicht gefunden endet" und dort feststeckt. |
Wie wäre es denn, statt an den Symptomen rumzudoktoren, an die Ursache zu gehen?  Z.B. vor dem ersten Navigate-Request eine Ping-Schleife laufen zu lassen, die prüft, ob der Host überhaupt erreicht werden kann?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Mi 12.10.11 11:56
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 12.10.11 12:12
Narses hat folgendes geschrieben : | eine Ping-Schleife |
Ich weiß zwar nicht, was eine Ping-Schleife ist, aber das sagt dir nur, dass der Server erreichbar ist, aber nicht, ob der gewünschte Dienst läuft und antworten kann.
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 12.10.11 13:21
Moin!
Luckie hat folgendes geschrieben : | Narses hat folgendes geschrieben : | eine Ping-Schleife | Ich weiß zwar nicht, was eine Ping-Schleife ist, |
Für dich gerne auch nochmal ausführlich: eine Schleife, die den Host anpingt und nur verlassen wird, wenn er antwortet oder ein Wiederholungstimeout eintritt.
Luckie hat folgendes geschrieben : | aber das sagt dir nur, dass der Server erreichbar ist, aber nicht, ob der gewünschte Dienst läuft und antworten kann. |
Ja, das ist natürlich sachlich korrekt, aber trotzdem am Ziel vorbei: Narses hat folgendes geschrieben : | tckids hat folgendes geschrieben : | das Programm soll später in meinen Autostart, somit kann es passieren das ich bei der Ausführung des Programmes noch kein Zugang zum Internet hab und das erste Navigations kommando in einem "Seite nicht gefunden endet" und dort feststeckt. |
|
Hier steht vermutlich noch keine LAN/Internet-Verbindung, also wird dieser Ansatz in den meisten Fällen das Problem lösen.
Das es bei dieser Problemklasse keine wasserdichte Lösung gibt, ist uns beiden spätestens seit dem Internet-Doyo bekannt.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
|