AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TWebBrowser Inhalt aus TStringList laden
Thema durchsuchen
Ansicht
Themen-Optionen

TWebBrowser Inhalt aus TStringList laden

Ein Thema von ToZie · begonnen am 19. Jan 2010
Antwort Antwort
ToZie

Registriert seit: 17. Feb 2004
43 Beiträge
 
Delphi 10.3 Rio
 
#1

TWebBrowser Inhalt aus TStringList laden

  Alt 19. Jan 2010, 10:33
Huhu,

ich bin am verzweifeln. Irgendwie finde ich keinen Weg um den in einer TStringList gespeicherten Inhalt einer Webseite im TWebBrowser fehlerfrei anzuzeigen. Da es hier im Forum bereits einige Threads zu diesem Thema gibt und ich schon einiges probiert habe möchte ich kurz anreissen was ich bereits probiert habe:

Delphi-Quellcode:
procedure TMyWB.LoadFromStrings(const aStrings: TStrings);
var
  ms: TMemoryStream;
begin
  // AssignDocument erzeugt ein leeres Dokument mit den nötigen Flags
  // und wartet auf dessen Fertigstellung
  if not assigned(Document) then AssignDocument;

  ms:=TMemoryStream.Create;
  aStrings.SaveToStream(ms);
  (Document as IPersistStreamInit).Load(TStreamadapter.Create(ms));
  ms.free;
end;
Das funktioniert soweit zwar, aber wie hier beschrieben funktioniert es nicht immer - und zwar immer dann nicht wenn der HTML Code größer als 4kb ist. Der im erwähnten Thread angeführte Lösungsvorschlag über:

Delphi-Quellcode:
procedure TMyWB.LoadFromStrings(const aStrings: TStrings);
var
  Range: IHTMLTxtRange;
begin
  if not assigned(Document) then AssignDocument;
  Range:=((Document as IHTMLDocument2).body as IHTMLBodyElement).createTextRange;
  Range.pasteHTML(aStrings.Text);
end;
setzt leider nur den Body, mein Dokument enhält jedoch Scripts die ausgeführt werden müssen. Ein dritter Weg:

Delphi-Quellcode:
procedure TMyWB.LoadFromStrings(const aStrings: TStrings);
var
  v: OLEVariant;
begin
  if not assigned(Document) then AssignDocument;
  v:=VarArrayCreate([0, 0], varVariant);
  v[0]:=AStrings.Text;
  (Document as IHTMLDocument2).Write(PSafeArray(TVarData(v).VArray));
  (Document as IHTMLDocument2).Close;
end;
bindet im Kopf des Dokuments angegebene scripts (<script src="..."></script>) nicht ein. Sicher habe ich da irgendwo einen Denkfehler oder schlicht zu wenig Ahnung von der Materie - vielleicht hat ja einer von Euch noch die eine oder andere Idee.

lg

Torsten
  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 22:56 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