AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi [Prob.]Funktion den HTML-Code aus TWebbrowser zu lesen!
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von buster55 · begonnen am 31. Mai 2008 · letzter Beitrag vom 1. Jun 2008
Antwort Antwort
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
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

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

  Alt 31. Mai 2008, 14:44
Hi und herzlich Willkommen!

Zitat von buster55:
allerdings spuckt mir delphi sobald ich den knopf drücke einen für mich unverständlichen fehler aus und das programm bricht ab !
Welchen Fehler denn? Index out of bounds?

Desweiteren würde ich nicht auf die bestimmte Zeile zugreifen, sondern per Pos nach "Ein Fehler ist aufgetreten" suchen.

[edit] Ok, herzlich Willkommen passt nicht ganz, aber dafür ist es der erste Beitrag [/edit]
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#3

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

  Alt 31. Mai 2008, 14:45
Welche Fehlermeldung kommt denn?

Ein verstecktes RichEdit und WebBrowser nehmen ist aber nicht die feine Art. Zum downloaden einer Datei kannst du IdHttp in Verbindung mit der Routine Get verwenden.

Dann könnte dein Code ungefähr so aussehen:

Delphi-Quellcode:
var
  Downloader: TIdHTTP;
  tmpstr: String;
begin
  Downloader := TIdHTTP.Create; //möglicherweise wird noch ein Parameter erwartet, hab ich nicht im Kopf ;-)
  tmpstr := Downloader.Get(edi1.text); //dies läd die im edit angegebene seite runter
  if pos('Ein Fehler ist aufgetreten!', tmpstr) > 0 then //Schauen ob der Fehlerstring in der Datei vorhanden ist
    ShowMessage('Link nicht verfügbar!');
  Downloader.Free; //ganz wichtig: Speicher freigeben
end;
Damit brauchst du weder einen WebBrowser noch ein RichEdit und die Anwendung sollte schneller und auch kleiner sein
  Mit Zitat antworten Zitat
buster55

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

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

  Alt 31. Mai 2008, 15:16
dank für eure flotten antworten
dumm von mir die fehlermeldung nicht mit zu senden aber büdde schön :
____BEGIN____
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 00466583 in module 'Project1.exe'. Read of address 00000000'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
____END____

Delphi 7 Enterprise [engl.]

@andreas: ja sicher nicht die feine art aber wie gesagft es ist nicht mehr und nicht weniger als ein 'Just 4 Fun' Projekt'

lg
buster
  Mit Zitat antworten Zitat
finalr

Registriert seit: 13. Mär 2008
17 Beiträge
 
#5

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

  Alt 31. Mai 2008, 17:20
Hi,

ich würde es so machen:

Delphi-Quellcode:
var URL, Quelltext, Status: String;
    i: Integer;
    HTTP: TIDHTTP;
begin
 URL := 'http://www.google.de';

 Try
   HTTP := TIDHTTP.Create(NIL);
   HTTP.HandleRedirects := True;

   Repeat
     Try
       Quelltext := HTTP.Get(URL);
     Except ON E:Exception DO
       begin
         case HTTP.ResponseCode of
           400: Status := 'Bad Request';
           403: Status := 'Forbidden';
           404: Status := 'Not Found';
         end;

         ShowMessage('Quelltext konnte nicht ausgelesen werden.' + #10#13 +
                     'Fehler ' + IntToStr(HTTP.ResponseCode) + ' / ' + Status);
       end;
     End;
     i := i + 1;
   Until (Quelltext <> '') or (i = 5);

 Finally
   HTTP.Free;
 End;

 if Quelltext <> 'then begin
   // Hier kann man nun mit den Quelltext arbeiten...
 end;
Nicht vergessen in den Uses "IdHTTP" einzufügen.

Gruss Daniel
  Mit Zitat antworten Zitat
buster55

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

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

  Alt 1. Jun 2008, 12:24
HEUL!
ich könnt mich selbst ohrefeigen für meine inkompetenz.
delphi gibt sich natürlich als engländer aus wodruch rapidshare nicht den deutschen quelltext anzeigt sondern den englischen
also muss man nicht nach 'Fehler' suchen sondern nach 'error'
und weil meine erste version so unsauber programmiert war ist delphi abgeschmiert

naja aus fehlern lernt man

danke für alles

  Mit Zitat antworten Zitat
Antwort Antwort


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 19:32 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