AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi EOleException bei TWebBrowser.Navigate
Thema durchsuchen
Ansicht
Themen-Optionen

EOleException bei TWebBrowser.Navigate

Ein Thema von mOfl · begonnen am 6. Dez 2008 · letzter Beitrag vom 6. Dez 2008
Antwort Antwort
mOfl

Registriert seit: 1. Jun 2006
11 Beiträge
 
#1

EOleException bei TWebBrowser.Navigate

  Alt 6. Dez 2008, 02:24
(Delphi 7 Personal unter Windows XP Home, IE7)

Hallihallo ihr,

ein weiteres Mal Probleme mit TWebBrowser. Ich verwende den, um eine Seite auf Änderungen im Quelltext zu überprüfen.
Zur Seite: Es gibt 2 verschiedene Versionen der Seite (sprich eine URL, aber über eine Zufallsvariable ändert sich der sichtbare Inhalt), wobei es kein Problem ist, die Seiten zu unterscheiden, ich mach das mit
Hugo := WebBrowser.OleObject.Document.Body.InnerHtml; und durchforste dann den Quelltext. Ist es Seite A, soll ein A-spezifischer Code ausgeführt werden, bei B B-spezifischer Code. Danach soll die Seite neu geladen werden.

Leider hab ich hierbei folgendes Problem, und zwar eine EOleException "Die angeforderte Ressource wird bereits verwendet.", die ausgelöst wird von WebBrowser.Navigate(myURL); im DocumentComplete-Block.

Vereinfacht:
Delphi-Quellcode:
procedure TForm1.btStartClick(Sender: TObject);
begin
          WebBrowser.Navigate(myURL);
end;

procedure TForm1.WebBrowserDocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
   //Code, um zwischen A und B zu entscheiden und dann
   //Ausfuehren des seitenspezifischen Codes
   WebBrowser.Navigate(myURL);
end;
Offensichtlich kann ich im DocumentComplete-Block nicht auch WebBrowser zugreifen oder zumindest nicht Navigate() aufrufen, warum auch immer. Weiß einer, wie ich dieses Problem beheben kann? Mit Navigate2() klappt es auch nicht, habe ich schon probiert.

Der Sinn dieser Struktur ist halt, dass nach Fertigladen der Seite zuerst überprüft und alles wichtige ausgeführt wird und danach die Seite neu geöffnet wird, um zu schauen, wie die Seite dieses Mal aussieht.

Bin ich grad komplett auf dem falschen Dampfer? =)
Würd mich über eine weiterbringende Antwort freuen.

Grüßle
Daniel
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: EOleException bei TWebBrowser.Navigate

  Alt 6. Dez 2008, 06:59
Hallo

Gibt es einen Grund, warum du eine visuelle Komponente zum holen des Quelltext verwendest?
Warum machst du es z.B nicht mit TIdHTTP ?

Zudem:
- Wenn du im OnDocumentComplete Navigate() aufrufst, landest du doch in einer Endlosschleife.
- Wenn die Seite Frames enthält, wird OnDocumentComplete mehrmals aufgerufen.
Thomas
  Mit Zitat antworten Zitat
mOfl

Registriert seit: 1. Jun 2006
11 Beiträge
 
#3

Re: EOleException bei TWebBrowser.Navigate

  Alt 6. Dez 2008, 16:03
Huhu,

naja, ich hatte den Code schon gewaltig gekürzt, da macht dann die Komponente vielleicht nicht wirklich Sinn, stimmt. Allerdings gibt es in dem seitenspezifischen Code-Teil Anweisungen für einzelne Elemente, die angesprochen werden sollen (Buttons, Edit-Felder), die ich über TWebBrowser unkompliziert bekomme und auch den Wert auslesen kann. Zudem soll das ganze einfach auch angezeigt werden, also die Seite.

Eine Abbruchbedingung für die Endlosschleife gibt es auch, einerseits einen Button, andererseits soll das Ganze anhalten, wenn eine der beiden Seiten x-mal aufgerufen wurde. Ich hatte das alles weggelassen, weil es für das eigentliche Problem irrelevant ist, und zwar dass Navigate() im OnDocumentComplete-Block eine Exception wirft.

Frames hat die Seite nicht, also würde das so schon passen.

Ich weiß nur nicht, warum das nicht funktioniert, so wie ich das vorhabe. Ist das ein TWebBrowser-Problem? Weiß einer, ob das mit der TMozilla-Komponente funktionieren würde? Oder kann man der TWebBrowser-Komponente irgendwie anders mitteilen, dass sie nach der erfolgreisen Seitenanalyse neu laden soll? Ich habe es über WebBrowser.Refresh; versucht, aber das funktioniert nicht, weil dann die Meldung kommt, dass Daten übertragen wurden und diese neu abgeschickt werden müssten, und wenn ich diese mit "Wiederholen" nochmal absende, bekomme ich jedes mal die gleiche Seite. Entspricht ja dann dem F5 im Browser, wenn man auf eine dynamische Seite kommt.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: EOleException bei TWebBrowser.Navigate

  Alt 6. Dez 2008, 16:08
Ich habe beim Testen myURL die Seite von Google.com zugewiesen. Bekam keine EOleException.
Liegt wohl an deiner Seite oder deinem Code.
Vielleicht könntest du mal ein vereinfachtes Beispiel Projekt hochladen, wo man den Fehler reproduzieren kann.

Wegen WebBrowser.Refresh: Es gibt auch ein WebBrowser.Refresh2
Thomas
  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 21:44 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