Hallo,
ich mache gerade mit dem TWebbrowser herum.
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
Letzter Stand von meines Try'n'Error:
Delphi-Quellcode:
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;
Gibt es nebenbei auch eine elegantere Möglichkeit auf die
HTML-Objekteigenschaften zuzugreifen anstelle meiner "if by=.. then.."-Abfragen? Irgendwie so O.object['value']?