![]() |
Leere Stream
Habe dieses Forum schon mehrfach nach folgender Problemlösung durchsucht aber nix gefunden, geht um TWebBrowser und Quelltext. Benutze die untenstehende Function, beim ersten Mal enthält der Stream auch Daten. Wenn ich dann weiter auf der gleichen Page bleibe wird nur noch ein leerer Stream erzeugt. Woran kann es liegen ? Bin am verzweifeln.
Delphi-Quellcode:
function TFAWebBrowser.GetSource: String;
var ps: IPersistStreamInit; ss: TStringStream; sa: IStream; //s: string; begin //Result := OleObject.Document.Body.InnerHtml; //Result := OleObject.Document.Body.OuterHtml; ps := Document as IPersistStreamInit; ss := TStringStream.Create(''); try sa := TStreamAdapter.Create(ss) as IStream; if Succeeded(ps.Save(sa, True)) then Result := ss.DataString; finally ss.Free; end; end; |
Re: Leere Stream
Ich kann Dein Problem nicht nachvollziehen, da ich mit obiger Methode jedes Mal die vollständigen Daten erhalte...
...:cat:... |
Re: Leere Stream
Dann geh mal Bitte auf die folgende Seite
![]() |
Re: Leere Stream
Verwende mal OleCheck anstelle von Succeeded.
Du kommst so evtl. an eine Fehlermeldung.
Delphi-Quellcode:
// vorher
if Succeeded(ps.Save(sa, True)) then Result := ss.DataString; // nachher OleCheck(ps.Save(sa, True)); // bei Fehler gibt's ne Exception Result := ss.DataString; |
Re: Leere Stream
Werd ich mal probieren, Danke!
Exception kommt 'Das System kann die angegebene Datei nicht finden'. Kann es nur nicht Nachvollziehen, da Sie doch im WebBrowser dargestellt wird. |
Re: Leere Stream
Hallo!
Was fuer eine IE/Delphi Version hast du denn? Bei mir (D6, XP, IE 6) funktioniert der Code jedenfalls tadellos. Ansonsten probiere mal diesen Code: (von meinem ![]()
Delphi-Quellcode:
procedure WB_GetDocumentSourceToStream(Document: IDispatch; Stream: TStream);
// Save a TWebbrowser Document to a Stream var PersistStreamInit: IPersistStreamInit; StreamAdapter: IStream; begin Assert(Assigned(Document)); Stream.Size := 0; Stream.Position := 0; if Document.QueryInterface(IPersistStreamInit, PersistStreamInit) = S_OK then begin StreamAdapter := TStreamAdapter.Create(Stream, soReference); PersistStreamInit.Save(StreamAdapter, False); StreamAdapter := nil; end; end; function WB_GetDocumentSourceToString(Document: IDispatch): string; // Save a Webbrowser Document to a string var Stream: TStringStream; begin Result := ''; Stream := TStringStream.Create(''); try WB_GetDocumentSourceToStream(Document, Stream); Result := StringReplace(Stream.Datastring, #$A#9, #$D#$A, [rfReplaceAll]); Result := StringReplace(Result, #$A, #$D#$A, [rfReplaceAll]); finally Stream.Free; end; end; |
Re: Leere Stream
Auf dem Rechner wo ich ein wenig Programmiere ist IE6 XPPro Delphi7. Steht leider bei unserem Progger. Hätte gerne selber Delphi aber das Kleingeld, Naja.
Der MiniWebBrowser macht das gleiche, kein Quelltext. |
Re: Leere Stream
Hab die Lösung des Problems selbst gefunden. Liegt an dem Link der in der Seite angegeben ist. Bei "../Datei.asp" oder "/Datei.asp" wird der Quelltext nicht gefunden.
|
Re: Leere Stream
Zitat:
![]() |
Re: Leere Stream
Da sind die Links auch Komplett angegeben. Hat auch nichts mit der Dateierweiterung tun. Gehe mal davon aus das der TWebBrowser und TStream nur was mit kompletten Links anfangen kann. Warum auch immer.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:28 Uhr. |
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-2025 by Thomas Breitkreuz