AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wert von OleVariant überprüfen?

Ein Thema von Raul3D · begonnen am 23. Okt 2004 · letzter Beitrag vom 26. Feb 2005
Antwort Antwort
Seite 1 von 2  1 2      
Raul3D

Registriert seit: 22. Okt 2004
3 Beiträge
 
#1

Wert von OleVariant überprüfen?

  Alt 23. Okt 2004, 17:04
Hi,

ich will überprüfen, ob ein bestimmtes Element im TWebBrowser bereits geladen ist. Dazu benutze ich Browser.OleDocument.All.Item('name') um das Object zu bekommen. Allerdings bekomme ich mit dieser Funktion immer ein Element zurück, auch wenn es noch nicht geladen wude. Laut Delphi-Debugger ist der Wert dann zwar $00000000, aber da man OleVariants ja nicht mit "=" vergleichen kann, nützt das nicht viel.

Wie kann ich gucken ob wirklich ein Element zurückgegeben wurde (also z.B. $004132A5)? Ich habe es schon mit VarIsNull() probiert, das liefert aber immer False, auch wenn die OleVariant den Wert $00000000 hat.

Danke!
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Wert von OleVariant überprüfen?

  Alt 23. Okt 2004, 20:09
Moin,

das geht so...

Delphi-Quellcode:
procedure TForm.ButtonClick(Sender: TObject);
var x, Document:Variant;
begin
  Document:=WebBrowser.Document;
  x:=Document.All.Item('name');
  if Assigned(TVarData(x).VPointer) then
    x.Value := 'jetzt kann ich drauf zugreifen';
end;
MfG
Thorsten
  Mit Zitat antworten Zitat
Raul3D

Registriert seit: 22. Okt 2004
3 Beiträge
 
#3

Re: Wert von OleVariant überprüfen?

  Alt 24. Okt 2004, 14:30
Das liefert leider immer True zurück, auch wenn das Objekt nicht gefunden wurde und $00000000 zurückgeliefert wurde.
  Mit Zitat antworten Zitat
Raul3D

Registriert seit: 22. Okt 2004
3 Beiträge
 
#4

Re: Wert von OleVariant überprüfen?

  Alt 24. Okt 2004, 15:04
Ups, so funktioniert es doch. Hab gerade einen anderen Fehler entdeckt. Thanks!
  Mit Zitat antworten Zitat
BorlanDelphiUser

Registriert seit: 10. Mär 2003
Ort: Waltersdorf
91 Beiträge
 
Delphi 5 Professional
 
#5

Re: Wert von OleVariant überprüfen?

  Alt 25. Feb 2005, 16:15
Hallo,
ich hab gerade das gleich Problem wie Raul3D. Ich greife aber per ID auf das Element zu.

myString := Form1.WebBrowser.OleObject.document.getElementById('count').innerHTML; hab das ganze schon so probiert, funktioniert aber nicht es kommt trotzdem der Fehler.

Delphi-Quellcode:
procedure TForm.ButtonClick(Sender: TObject);
var x, Document:Variant;
begin
  Document:=WebBrowser.Document;
  x:=Document.getElementById('count');
  if Assigned(TVarData(x).VPointer) then
    x.innerHTML := 'jetzt kann ich drauf zugreifen';
end;
Besucht auch mal meine Homepage www.r-kersten.de. Es wäre schön wenn ihr mir einen Gästebucheintrag hinterlasst.
  Mit Zitat antworten Zitat
shmia

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

Re: Wert von OleVariant überprüfen?

  Alt 25. Feb 2005, 16:34
Wenn du überprüfen willst, ob in einem OleVariant ein (Automatisierungs)-Objekt steckt, dann:
Delphi-Quellcode:
var
   x, Document : OleVariant; // nicht Variant
begin
  Document:=WebBrowser.Document;
  x:=Document.getElementById('count');

  if VarType(FormItem) = varDispatch then // <-=====
     ShowMessage(x.innerHTML)
  else
     ShowMessage('nix geladen :-(');
Dann packst du dir das in ein Funktion, dann hast du es immer parat:
Delphi-Quellcode:
function VariantIsObject(const value:OleVariant):boolean;
begin
   result := (VarType(value) = varDispatch);
end;
Andreas
  Mit Zitat antworten Zitat
BorlanDelphiUser

Registriert seit: 10. Mär 2003
Ort: Waltersdorf
91 Beiträge
 
Delphi 5 Professional
 
#7

Re: Wert von OleVariant überprüfen?

  Alt 25. Feb 2005, 16:46
@shmia

und was ist - FormItem - ?
Besucht auch mal meine Homepage www.r-kersten.de. Es wäre schön wenn ihr mir einen Gästebucheintrag hinterlasst.
  Mit Zitat antworten Zitat
shmia

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

Re: Wert von OleVariant überprüfen?

  Alt 25. Feb 2005, 16:56
Zitat von BorlanDelphiUser:
@shmia
und was ist - FormItem - ?
Ein Kopierfehler; sollte eigentlich x heisen. (das ist einfach die OleVariant, die getestet werden soll)
Andreas
  Mit Zitat antworten Zitat
BorlanDelphiUser

Registriert seit: 10. Mär 2003
Ort: Waltersdorf
91 Beiträge
 
Delphi 5 Professional
 
#9

Re: Wert von OleVariant überprüfen?

  Alt 25. Feb 2005, 17:16
hmm ... also ich hab das ganze jetzt so gemacht.

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
   x, Document : OleVariant; // nicht Variant
begin
  Document:=WebBrowser.Document;
  x:=Document.getElementById('countdown');

  if VarType(x) = varDispatch then // <-=====
     ShowMessage(x.innerHTML)
  else
     ShowMessage('nix geladen :-(');
end;
und wenn ich jetzt auf den Button klicke kommt immer noch eine Fehlermeldung und keine Messagebox mit dem Hinweis nix geladen

Mach ich da irgendwas verkehrt oder ist da irgendwas im Code falsch?
Besucht auch mal meine Homepage www.r-kersten.de. Es wäre schön wenn ihr mir einen Gästebucheintrag hinterlasst.
  Mit Zitat antworten Zitat
shmia

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

Re: Wert von OleVariant überprüfen?

  Alt 25. Feb 2005, 17:41
Zitat von BorlanDelphiUser:
und wenn ich jetzt auf den Button klicke kommt immer noch eine Fehlermeldung und keine Messagebox mit dem Hinweis nix geladen
Mach ich da irgendwas verkehrt oder ist da irgendwas im Code falsch?
Du musst schon vorher nachschauen, ob in der Variablen document was drin ist:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
   x, Document : OleVariant; // nicht Variant
begin
  Document:=WebBrowser.Document;
  if not VariantIsObject(Document) then
     raise Exception.Create('kein Dokument geladen');
  
  x:=Document.getElementById('countdown');
  if VariantIsObject(x) then
     ShowMessage(x.innerHTML)
  else
     ShowMessage('countdown nicht gefunden :-(');
end;
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz