Einzelnen Beitrag anzeigen

SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
313 Beiträge
 
Delphi 12 Athens
 
#1

Prüfen ob ein OleVariant verfügbar ist?

  Alt 20. Nov 2018, 16:40
Delphi-Version: 10.1 Berlin
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='innerTextthen result:=O.innerText;
      if by='value'     then result:=O.value;
      if by='innerHTMLthen 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']?
  Mit Zitat antworten Zitat