Einzelnen Beitrag anzeigen

buster55

Registriert seit: 25. Nov 2007
88 Beiträge
 
#1

[Prob.]Funktion den HTML-Code aus TWebbrowser zu lesen!

  Alt 31. Mai 2008, 14:40
guten tag liebe Delphi-Gemeinde
ich hab gestern abend die idee gehabt spasshalber ein kleines tool zu programmieren das nach eingabe eines downloadlinks auf rapidshare.com sagt ob die datei noch verfügbar ist.
dazu habe ich zunächst einmal die funktion zu auslesen eines quelltextes im twebbrowser
das ganze sollte wiefolgt funktioneren
Button wird gedrückt ===>
eingegebener link wird (invisible) im twebbrowser geöffenet ===> Quelltext wird gelsen (das funktioniert auch) ===> der q.-text kommt in ne richedit ===> mithilfe einer if bedingung wird kontrolliert ob in einer bestimmten zeile des quelltextes das wort 'Fehler' vorkommt (das tut es nämlich wenn bei rapidshare die datei weg ist) ===> und je nachdem wird in nem label das ergebniss präsentiert.
allerdings spuckt mir delphi sobald ich den knopf drücke einen für mich unverständlichen fehler aus und das programm bricht ab !

WARUM was stimmt im quelltext nicht:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, HTTPApp, StdCtrls, ActiveX, ComCtrls;




type
  TForm1 = class(TForm)
    WebDispatcher1: TWebDispatcher;
    WebBrowser1: TWebBrowser;
    Button2: TButton;
    Richedit1: TRichEdit;
    Label1: TLabel;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);

    procedure Button2Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  var Fehler,res : string;
var i : integer;
implementation

{$R *.dfm}
/////////////////////////////////////
// CODE AUSLESEN
function WB_GetHTMLCode(WebBrowser: TWebBrowser; ACode: TStrings): Boolean;
var
  ps: IPersistStreamInit;
  ss: TStringStream;
  sa: IStream;
  s: string;
begin
  ps := WebBrowser.Document as IPersistStreamInit;
  s := '';
  ss := TStringStream.Create(s);
  try
    sa := TStreamAdapter.Create(ss, soReference) as IStream;
    Result := Succeeded(ps.Save(sa, True));
    if Result then ACode.Add(ss.Datastring);
  finally
    ss.Free;
  end;
end;
////////////////////////////////////


procedure TForm1.FormCreate(Sender: TObject);

begin
richedit1.Text := '';

end;


procedure TForm1.Button2Click(Sender: TObject);
var link : string;
begin
link := edit1.text;
webbrowser1.Navigate(link);
  WB_GetHTMLCode(Webbrowser1, richedit1.Lines);
if richedit1.Lines[70] = '<center><h2>Ein Fehler ist aufgetreten:</h2>

<font color="red">
then begin
label1.caption := 'DOWN!!!' ;
end
end;





end.
ich bin dankbar für jede produktive antwort
lg buster
  Mit Zitat antworten Zitat