Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TWebBrowser < undefinierter Bezeichner (https://www.delphipraxis.net/27500-twebbrowser-undefinierter-bezeichner.html)

endeffects 11. Aug 2004 10:23


TWebBrowser < undefinierter Bezeichner
 
Hallo,

ich möchte in einem Thread den TwebBrowser dynamisch erzeugen,
allerdings meckert der Compiler das TWebBrowser ein undefinierter
Bezeichner wäre.

Delphi-Quellcode:
uses
  Classes, SysUtils;
...

procedure TMyThreads.Grabber(Keyword: String; FFirstStep: Integer);
var
  WebBrowser: TWebBrowser;
begin
  WebBrowser:= TWebBrowser.Create(nil);
  with WebBrowser do
   try
    except
        //nix
    end;

  FreeAndNil(WebBrowser);
end;
Die Uses hatte ich auch schon einmal erweitert

Delphi-Quellcode:
uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
Jemand eine Idee?

Alexander 11. Aug 2004 10:29

Re: TWebBrowser < undefinierter Bezeichner
 
Du musst noch die entsprechende Unit einbinden. SHDocVw_TLB müsste die richtige sein...

scp 11. Aug 2004 10:29

Re: TWebBrowser < undefinierter Bezeichner
 
Du musst entweder die Unit ShDocVw (ab Professional) oder ShDocVw_TLB (bei Personal, wenn selbst importiert) einbinden.

endeffects 11. Aug 2004 10:31

Re: TWebBrowser < undefinierter Bezeichner
 
oh danke =)

endeffects 11. Aug 2004 11:07

Re: TWebBrowser < undefinierter Bezeichner
 
hmm ein kleines problem hab ich nun aber trotzdem noch,
wenn ich über .navigate eine webseite laden möchte
wird diese ohne sleep(); nur teilweise oder gar nicht
geladen. kann man dazu irgendwo einen timeout setzen?

Delphi-Quellcode:
procedure TMyThreads.Grabber();
var
  WebBrowser: TWebBrowser;
begin
  OleInitialize(nil);
  WebBrowser:= TWebBrowser.Create(nil);
  with WebBrowser do
    try
      WebBrowser.Navigate('http://test.com');
      sleep(2000);
    except
        //nix
    end;
  FreeAndNil(WebBrowser);
  OleUninitialize;
end;

Matze 11. Aug 2004 11:37

Re: TWebBrowser < undefinierter Bezeichner
 
Neue Frage, neuer Thread!



Zitat:

Zitat von endeffects
Delphi-Quellcode:
with WebBrowser do
    try
      WebBrowser.Navigate('http://test.com');
      sleep(2000);
    except
        //nix
    end;

Wenn du schreibst
Delphi-Quellcode:
with WebBrowser do
dann kannst du nachher nur "Navigate('...');" schreiben, ohne vorangestelltes "WebBrowser". ;)


Und "sleep" friert das ganze Programm ein, schau lieber mal nach delaydelay


Delphi-Quellcode:
try

...

except
  //nix
end;
Sollte man auch nicht verwenden, siehe dazu hier Punkt 1.



Du kannst auch warten, bis die Seite komplett geladen ist, mittels:

Delphi-Quellcode:
procedure TForm1.wbNavigateComplete2(Sender: TObject;const pDisp: IDispatch; var URL: OleVariant);
const
  url_google = 'http://www.google.de';
begin
  cbWeb.Text := lower(wb.OleObject.Document.Url);

  if (cbWeb.Text = url_google) or (cbWeb.Text = url_google + '/') then begin
    ShowMessage(cbWeb.Text + ' wurde geladen');
  end;
end;

Edit: Ein paar Tippfehler verbessert.

endeffects 11. Aug 2004 11:50

Re: TWebBrowser < undefinierter Bezeichner
 
oh danke für die hilfe,
ich werd versuchen zukünftig deine ratschläge zu beherzigen =)
eine frage hab ich allerdings trotzdem noch *gg*

wenn ich versuche in einem thread ein formular (z.b. google.com) auszufüllen
dann gibt es eine zugriffverletzung an dieser stelle:

Delphi-Quellcode:
WebBrowser.OleObject.Document.forms.Item(0).Item('g').Value := 'internet';
Exception der Klasse EAccessViolation

endeffects 11. Aug 2004 13:25

Re: TWebBrowser < undefinierter Bezeichner
 
also ich hab nun versucht zu prüfen ob
überhaupt ein formular existiert das ich ausfüllen
kann, auch hier erhalte ich eine zugriffsverletzung
wenn der thread versucht auf das OLE Objekt zu zugreifen.

Delphi-Quellcode:
  if OleObject.Document.all.tags('FORM').Length = 0 then
  begin
    Exit;
  end;
das selbe problem stellt sich bei mir auch da wenn ich
zum testen eine neue anwendung erzeuge

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ShDocVw, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var wb: TWebBrowser;
begin
  wb := TWebBrowser.Create(Form1);
  TWinControl(wb).Name := 'MyWebBrowser';
  TWinControl(wb).Parent := Form1;
  wb.Align := alClient;
  wb.Navigate('http://www.google.com');
  sleep(2000);
  if wb.OleObject.Document.all.tags('FORM').Length = 0 then
  begin
    Exit;
  end
  else
  showmessage('found');
  end;

end.

endeffects 11. Aug 2004 14:10

Re: TWebBrowser < undefinierter Bezeichner
 
ich versteh das einfach nicht, nun les ich mich seit stunden
durch foren, newsgroups und artikel und hab diverese
sourcecodes ausprobiert, aber jedesmal wenn ich auf
auf ole objekt zugreifen will gibts den fehler

das ist echt zum kotzen :wall:

Matze 11. Aug 2004 14:12

Re: TWebBrowser < undefinierter Bezeichner
 
:warn: Pushen ist erst nach 24 Stunden erlaubt :dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:28 Uhr.
Seite 1 von 4  1 23     Letzte »    

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