Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Quelltext von Seite mittels WebBrowser <ERROR> (https://www.delphipraxis.net/147099-quelltext-von-seite-mittels-webbrowser-error.html)

nanoflo 1. Feb 2010 22:09


Quelltext von Seite mittels WebBrowser <ERROR>
 
Hi Leute,

ich versuche ein Programm mit delphi zu schreiben welches beim Start automatisch checkt ob es noch aktuell ist (und dann ggf. ein update startet).
Ich habe nun eine php Seite welche z.b. die Zahl 10 anzeigt (keine header/body etc., als quelltext steht nur 10 dort).

Nun möchte ich dies in Delphi auslesen und weiterverarbeiten..ich habe mitlerweile schon dem WebBrowser von Delphi, welcher die Seite anzeigt, kann aber den Inhalt nicht weiter verwenden.. :(:(

Jetz bin ich auf folgende Funktion gestoßen:

Delphi-Quellcode:
function GetBrowserHtml(const webBrowser: TWebBrowser): String;
var
  strStream: TStringStream;
  adapter: IStream;
  browserStream: IPersistStreamInit;
begin
sleep(1000);
  strStream := TStringStream.Create('');
  try
    browserStream := webBrowser.Document as IPersistStreamInit;
    adapter := TStreamAdapter.Create(strStream,soReference);
    browserStream.Save(adapter,true);  //Problem (Zeile 12)
    result := strStream.DataString;
  finally
  end;
  strStream.Free();
end;
(Quelle: Obtain the HTML from the WebBrowser DOM)

bei Zeile 12 streikt Delphi und ich bekomme folgende Debugger Exeption Notification:
Projekt Project1.exe raised exeption class ESccessViolation with message 'Access violation at adress 0045DFF9 in module 'Project1.exe'. Read of address 00000000'. Process stopped. Use Step or Run to continue.

Ich weiß einfach nicht was ich falsch gemacht habe..
Bitte um Hilfe

Danke im Vorraus
Flo

himitsu 1. Feb 2010 22:17

Re: Quelltext von Seite mittels WebBrowser <ERROR>
 
Ganz im Ernst, für sowas nimmt man keinen rießigen WebBrowser.

Stichwort: Indy und Co.

Webo 2. Feb 2010 07:51

Re: Quelltext von Seite mittels WebBrowser <ERROR>
 
Neben der Indy-Komponente wäre die UrlMon.pas eine weitere Möglichkeit, die html Seite einfach temporär runterzuladen. Dann brauchst du keine weiteren Komponenten. Schau mal hier: http://www.delphi-treff.de/tipps/net...herunterladen/

Denn, wie himitsu schon sagt: Den TWebBrowser brauchst du in diesem Fall gar nicht ;-)

p80286 2. Feb 2010 09:46

Re: Quelltext von Seite mittels WebBrowser <ERROR>
 
Hallo Nanoflo
so sollte es funktionieren:
Delphi-Quellcode:
function WEB2Memo(memo:tmemo):boolean;
var
  ps: IPersistStreamInit;
  ss: TStringStream;
  sa: IStream;
  s: string;
begin
  result:=false;
  if not(form1.webbrowser1.Busy) and (form1.webbrowser1.readystate=readystate_complete)then begin
    ps := form1.WebBrowser1.Document as IPersistStreamInit;
    s := '';
    ss := TStringStream.Create(s);
    try
      sa := TStreamAdapter.Create(ss, soReference) as IStream;
      ps.Save(sa, True);
      memo.text:='';
      memo.lines.Add(ss.Datastring);
      result:=true;
    finally
      ss.Free;
    end;
  end;
......
end;
Gruß
K-H

nanoflo 2. Feb 2010 15:52

Re: Quelltext von Seite mittels WebBrowser <ERROR>
 
Zitat:

Zitat von Webo
Neben der Indy-Komponente wäre die UrlMon.pas eine weitere Möglichkeit, die html Seite einfach temporär runterzuladen. Dann brauchst du keine weiteren Komponenten. Schau mal hier: http://www.delphi-treff.de/tipps/net...herunterladen/

Denn, wie himitsu schon sagt: Den TWebBrowser brauchst du in diesem Fall gar nicht ;-)

Das hört sich ja schon sehr gut an, allerdings funktioniert es bei mir leider nicht. Ich habe die Indys (version 9) heruntergeladen und (hoffentlich) auch richtig installiert, delphi meldet jedoch nach wie vor noch:
[Error] Project1.pas(242): Undeclared identifier: 'idHTTP1'

mein code:
Delphi-Quellcode:
Memo1.Text:=idHTTP1.Get('http://wer.weis.was.php');
Was mache ich falsch?

himitsu 2. Feb 2010 15:59

Re: Quelltext von Seite mittels WebBrowser <ERROR>
 
Hast du auch diese Komponente eingebunden/erstellt?

nanoflo 2. Feb 2010 16:40

Re: Quelltext von Seite mittels WebBrowser <ERROR>
 
ich habe die batch datei ausgeführt, die extrahierten dateien hab ich ich das delphi verzeichniss kopiert und dann bei delphi unter tools-environment options-library den ordner pfad hinzugefugt und dann die indy70.dpk ausgeführt (habe delphi 7se)

p80286 2. Feb 2010 16:46

Re: Quelltext von Seite mittels WebBrowser <ERROR>
 
So sollte es eigentlich funktionieren:

Delphi-Quellcode:
implementation
uses idhttp;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  MyIdHTTP: TIdHTTP;
  HTMLCode: string;
begin
  MyIdHTTP := TIdHTTP.Create(form1);
try
  HTMLCode := MyIdHTTP.Get('http:................');
finally
  FreeAndNil(MyIdHTTP);
end;
  Memo1.Text:=HTMLCode;
end;
Gruß
K-H

himitsu 2. Feb 2010 16:50

Re: Quelltext von Seite mittels WebBrowser <ERROR>
 
Ja, wo soll dann also idHTTP1 herkommen?

Die Komponente mußt du also auch noch erstellen (oder eben eine, mit diesem Namen, auf die Form gezogen haben)

Webo 2. Feb 2010 17:08

Re: Quelltext von Seite mittels WebBrowser <ERROR>
 
Wobei ich dir zum "auf die Form ziehen" rate, dann kann man das wenigstens "anfassen", da es dann auch im Objektinspektor gelistet ist ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:23 Uhr.
Seite 1 von 2  1 2      

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