Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

AW: OleVariant auf Null prüfen?

  Alt 26. Okt 2010, 17:09
Also um zu Prüfen ob ein Variant = Null ist verwendet man die Funktion VarIsNull() aus der Unit Variants.

Du hast aber noch ein ganz anderes Problem.
Du greifst ohne Prüfung auf Document zu:
aNode := WebBrowser1.OleObject.Document.all.tags('table').Item(0); Wenn kein Document geladen ist, dann ist Document = nil und die Zugriffsverletzung vorprogrammiert!
Daher:
Delphi-Quellcode:
var
  document : OleVariant;
begin
  if not Assigned(WebBrowser1.Document) then
    raise Exception.Create('kein HTML-Dokument geladen');
  document := WebBrowser1.Document;
  aNode := document.all.tags('table').Item(0);
Dann gehts aber noch weiter.
Du greifst mit Gottvertrauen auf ein Element zu, dass mit 'table' getagged ist.
Und wenn es das nicht gibt? Dann macht's auch "Platsch".
Delphi-Quellcode:
function VarIsDispatchObject(const v : Variant): Boolean; // Hilfsfunktion
var
   vt : Integer;
begin
   vt := VarType(v) and not varByRef;
   Result := (vt = varDispatch);
end;
.....

var
  document, table : OleVariant;
begin
  if not Assigned(WebBrowser1.Document) then
    raise Exception.Create('kein HTML-Dokument geladen');
  document := WebBrowser1.Document;
  table := document.all.tags('table');
  if not VarIsDispatchObject(table) then
    raise Exception.Create('kein "table"-Element im Dokument enthalten');
  aNode := table.Item[0];
Andreas
  Mit Zitat antworten Zitat