![]() |
Delphi-Version: 10.1 Berlin
Prüfen ob ein OleVariant verfügbar ist?
Hallo,
ich mache gerade mit dem TWebbrowser herum. :oops: Ich möchte auf einer Webseite die Werte bestimmter IDs abfragen. Diese stehen nicht immer in in der Tag-Eigenschaft 'value', sondern auch mal im Text selbst. Um die richtige Auswahl zu treffen, sage ich der Function, von wo ich den Wert haben möchte. Ich taste mich langsam vor, ob es einen Bezug auch wirklich gibt - oder muss ich mir keine Gedanken machen? Jetzt knallt mir der Debugger aber so "EVariantInvalidOpError" um die Ohren (ungültige Variantenoperation) - das Konzept mit den Varianten oder OleVarianten ist mir nur vage geläufig :roll: Letzter Stand von meines Try'n'Error: :pale:
Delphi-Quellcode:
Gibt es nebenbei auch eine elegantere Möglichkeit auf die HTML-Objekteigenschaften zuzugreifen anstelle meiner "if by=.. then.."-Abfragen? Irgendwie so O.object['value']?
function GetById(id:string; by:shortstring):string;
var V:Variant; O:OleVariant; begin result:=''; V:=Form1.Webbrowser1.OleObject; //will zunächst wissen, ob nachfolgende Abfragen Sinn machen if V<>NULL then begin //geht nicht mit NULL, auch nicht mit NIL, auch nicht mit 0 - ja wie denn dann? O:=V.Document; //Document überhaupt da? if O<>Null then O:=V.Document.GetElementById(id); // dann nach der Id sehen if (O<>Null) then begin if by='innerText' then result:=O.innerText; if by='value' then result:=O.value; if by='innerHTML' then result:=O.innerHTML; end; end; end; |
AW: Prüfen ob ein OleVariant verfügbar ist?
Ich empfehle Dir mal
![]() Eine Antwort auf Deine Frage habe ich erstmal nicht, tut mir leid. |
AW: Prüfen ob ein OleVariant verfügbar ist?
Zitat:
![]() ![]() ![]() |
AW: Prüfen ob ein OleVariant verfügbar ist?
Zitat:
|
AW: Prüfen ob ein OleVariant verfügbar ist?
Zitat:
|
AW: Prüfen ob ein OleVariant verfügbar ist?
Hey :thumb:
Aus der Kombination der Möglichkeiten habe ich meine Function jetzt zum Laufen bekommen:
Delphi-Quellcode:
Sieht zwar immer noch etwas gemurkst aus, aber läuft :stupid:
function GetById(id:string; by:shortstring):string;
var V:Variant; O:OleVariant; D: IHTMLDocument2; begin result:=''; D := Form1.WebBrowser1.Document as IHTMLDocument2; if D<>nil then if D.readyState='complete' then begin V:=Form1.Webbrowser1.OleObject; if not VarIsEmpty(V) then begin O:=V.Document; if not VarIsNull(O) then begin O:=O.GetElementById(id); if (not VarIsEmpty(O)) and (by<>'') then begin if by='innerText' then result:=O.innerText; if by='value' then result:=O.value; if by='innerHTML' then result:=O.innerHTML; end else result:='true'; //für die Abfrage, ob es die gewünschte ID überhaupt gibt //Ergebnis also ''=nicht da, 'true'=ID da, oder der Wert der ID (ich weiß, wie die Seite aufgebaut ist) end; end; end; end; Danke für Eure Hilfe! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:05 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 by Thomas Breitkreuz