Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi WebBrowser - Überprüfen ob Eingabefeld vorhanden (https://www.delphipraxis.net/108244-webbrowser-ueberpruefen-ob-eingabefeld-vorhanden.html)

skyquaker 9. Feb 2008 17:50


WebBrowser - Überprüfen ob Eingabefeld vorhanden
 
In meinem Programm wird ständig ein Webbrowser (ich benutze die Embedded Webbrowser Komponenten, die sind aber vollständig mit dem "normalen" Webbrowser kompatibel) benutzt, in dem Inputfelder mit Daten ausgefüllt werden. Manchmal kommt es aber vor, das eine Seite nicht (vollständig) erreichbar (die seite wird angezeigt, es ist aber kein formular zu sehen) ist und dann kriege ich eine wunderbare Access Violation. (Diese mit try ... except abzufangen geht nicht, das habe ich bereits probiert.) Deshalb möchte ich zuerst eine Funktion einbauen, die überprüft ob die Seite korrekt angezeigt wird (also alle Formularfelder vorhanden sind).

Das habe ich mir so gedacht:
Delphi-Quellcode:
function checksite():Boolean
begin

if
Überprüfen ob ein bestimmtes Element vorhanden ist.
then
Wenn ja: Result:=true;
else
Wenn nein: Result:=false;

end;
Kann mir jemand helfen? Das würde mich ein ganzes Stück weiter bringen :thumb:

marabu 9. Feb 2008 18:40

Re: WebBrowser - Überprüfen ob Eingabefeld vorhanden
 
Hallo,

eine Gegenfrage: Wie stellst du denn bisher sicher, dass du erst dann auf das HTML Document Object Model zugreifst, wenn es vollständig aufgebaut wurde?

Freundliche Grüße

toms 9. Feb 2008 18:58

Re: WebBrowser - Überprüfen ob Eingabefeld vorhanden
 
Zitat:

Diese mit try ... except abzufangen geht nicht
Wenn dein Programm außerhalb von Delphi läuft, kommt keine Fehlermeldung.

skyquaker 9. Feb 2008 19:00

Re: WebBrowser - Überprüfen ob Eingabefeld vorhanden
 
Zitat:

Zitat von marabu
Hallo,

eine Gegenfrage: Wie stellst du denn bisher sicher, dass du erst dann auf das HTML Document Object Model zugreifst, wenn es vollständig aufgebaut wurde?

Freundliche Grüße

Mit der WaitForBrowser Procedure (die ich hier im Forum gefunden habe):

Delphi-Quellcode:
procedure WaitForBrowser(WebBrowser:TEmbeddedWB);
begin
   while WebBrowser.ReadyState <> READYSTATE_COMPLETE do
   begin
      Application.ProcessMessages;
      Sleep(50);
   end;
end;
Oder meintest du was anderes?

skyquaker 9. Feb 2008 19:02

Re: WebBrowser - Überprüfen ob Eingabefeld vorhanden
 
Zitat:

Zitat von toms
Zitat:

Diese mit try ... except abzufangen geht nicht
Wenn dein Programm außerhalb von Delphi läuft, kommt keine Fehlermeldung.

Doch, leider schon. Ich kriege immer eine Access Violation, egal ob innner- oder außerhalb von Delphi.

marabu 9. Feb 2008 21:11

Re: WebBrowser - Überprüfen ob Eingabefeld vorhanden
 
Wenn ich mich richtig erinnere, dann leistet die Funktion FindInputElement() das, was du suchst.

Dein Zugriffsfehler wird vermutlich durch einen mehrstufigen Ausdruck wie z.B. WebBrowser .OleObject .Document .forms .item('sampleform') .elements .item('user') verursacht, wobei ein NIL-Zeiger (z.B. item('sampleform')) enthalten ist. Um das zu erkennen kannst du den Ausdruck zerlegen und schrittweise ausführen.

Gute Nacht


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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