Timer auf Prozedur?
spacer
Autor Nachricht
tckids
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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:

ausblenden Delphi-Quelltext markieren
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 user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mi 12.10.2011 um 11:48
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
EE-Maler
Beiträge: 1754
Erhaltene Danke: 62

Windows XP
Delphi (2005 Bug Edition), Java (Eclipse), Haskell (ghci), C++ (Visual Studio 2010, Qt Creator)
BeitragVerfasst: Mi 12.10.11 08:17 
ausblenden Delphi-Quelltext markieren
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
Jen, [this computer] is infected. If this was a human being, I'd shoot it in the face. (IT Crowd)

Für diesen Beitrag haben gedankt: tckids
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
tckids Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Luckie
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Beiträge: 11803
Erhaltene Danke: 146

WindowsXP Professional SP2
BDS2006, VS C++ Express, Eclipse (Java), Flex (Flash, AS)
BeitragVerfasst: 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?

_________________
Gruß Michael

Für diesen Beitrag haben gedankt: tckids
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
tckids Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Administrator
Beiträge: 8371
Erhaltene Danke: 244

W2k, WXPpro
TP3 - D7pro
BeitragVerfasst: Mi 12.10.11 11:50 
Moin und :welcome: in der EE!

user profile icontckids hat folgendes geschrieben Zum zitierten Posting springen:
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? :roll: Z.B. vor dem ersten Navigate-Request eine Ping-Schleife laufen zu lassen, die prüft, ob der Host überhaupt erreicht werden kann? :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
EE-Maler
Beiträge: 1754
Erhaltene Danke: 62

Windows XP
Delphi (2005 Bug Edition), Java (Eclipse), Haskell (ghci), C++ (Visual Studio 2010, Qt Creator)
BeitragVerfasst: Mi 12.10.11 11:56 
Guck mal da:
msdn.microsoft.com/e...21%28v=vs.85%29.aspx

Dort sind auch die ErrorCodes verlinkt:
msdn.microsoft.com/e...33%28v=vs.85%29.aspx

PS:
kannst auch mal da gucken:
www.cryer.co.uk/bria....htm#OnNavigateError

_________________
a broken heart is like a broken window - it'll never heal
Jen, [this computer] is infected. If this was a human being, I'd shoot it in the face. (IT Crowd)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Luckie
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Beiträge: 11803
Erhaltene Danke: 146

WindowsXP Professional SP2
BDS2006, VS C++ Express, Eclipse (Java), Flex (Flash, AS)
BeitragVerfasst: Mi 12.10.11 12:12 
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
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.

_________________
Gruß Michael
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star
Administrator
Beiträge: 8371
Erhaltene Danke: 244

W2k, WXPpro
TP3 - D7pro
BeitragVerfasst: Mi 12.10.11 13:21 
Moin!

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
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. ;)

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
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:
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
user profile icontckids hat folgendes geschrieben Zum zitierten Posting springen:
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. :idea:

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.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home