AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi html-Inhalt des WebBrowsers in Datenbank speichern?
Thema durchsuchen
Ansicht
Themen-Optionen

html-Inhalt des WebBrowsers in Datenbank speichern?

Ein Thema von Hansi · begonnen am 10. Aug 2005 · letzter Beitrag vom 14. Aug 2005
Antwort Antwort
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#1

html-Inhalt des WebBrowsers in Datenbank speichern?

  Alt 10. Aug 2005, 19:08
Hey,

In einem anfangs leeren WebBrowser schreibe ich Text usw rein. Nun möchte ich den html code in eine Datenbank(MySQL) speichern.

Wie mache ich so was?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: html-Inhalt des WebBrowsers in Datenbank speichern?

  Alt 10. Aug 2005, 20:45
Hallo Hansi,

vielleicht hilft dir das weiter:

Delphi-Quellcode:
var
  bClearDirty: boolean = true;

function SaveToStream(wb: TWebBrowser; const s: TStream): HRESULT;
begin
  if not Assigned(wb.Document) then AssignDocument(wb);
  s.seek(0, 0);
  Result := (wb.Document as IPersistStreamInit).Save(TStreamadapter.Create(s), bClearDirty);
end;

function SaveHypertext(wb: TWebBrowser; fileName: string): string;
var
  fs: TFileStream;
begin
  fs := TFileStream.Create(fileName, fmCreate);
  SaveToStream(wb, fs);
  fs.Free;
end;

procedure Test;
begin
  SaveHypertext(WebBrowser, 'c:\temp\hansi.html');
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#3

Re: html-Inhalt des WebBrowsers in Datenbank speichern?

  Alt 11. Aug 2005, 10:16
Hallo marabu,

Vielen Dank für Deine Hilfe!

Damit sind fast alle Probleme schon gelöst; Nur...

Wie kann ich den Inhalt in eine Variable zwischenspeichern, damit ich dann die Variable in die Datenbank speichern kann? Muss ich da über eine Temp Datei gehen oder geht das auch direkt!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: html-Inhalt des WebBrowsers in Datenbank speichern?

  Alt 11. Aug 2005, 10:26
Nimm das (ungetestet) noch dazu:

Delphi-Quellcode:
function GetHypertext(wb: TWebBrowser): string;
var
  s: TMemoryStream;
  p: pointer;
begin
  s := TMemoryStream.Create;
  SaveToStream(wb, s);
  SetLength(Result, s.Size);
  p := @Result[1];
  Move(s.Memory^, p^, s.Size);
  s.Free;
end;
marabu
  Mit Zitat antworten Zitat
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#5

Re: html-Inhalt des WebBrowsers in Datenbank speichern?

  Alt 14. Aug 2005, 10:29
Hey,

Also, SaveHypertext funzt (fast).

Die Zeile:
if not Assigned(wb.Document) then AssignDocument(wb); habe ich mit "//" auskommentiert, weil sonst folgende Fehlermeldung kommt:
Undefinierter Bezeichner "AssignDocument"
Woran liegt es?

Das Speichern in eine Datei funktioniert bestens! Danke!

Das Speichern des WebBrowser Inhaltes in eine String Variable tut aber nicht so!
Wenn ich mir die Variable mit ShowMessage anzeigen lassen steht da:
"ÿþ<"

Irgendwo mache ich da noch einen Fehler! Kann mir nochmal jemand helfen?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: html-Inhalt des WebBrowsers in Datenbank speichern?

  Alt 14. Aug 2005, 11:07
Hansi, du machst nicht direkt einen Fehler - mein Code ist noch nicht für Unicode angepasst. Der Inhalt des web document muss bei UTF-8 und UTF-16 codierten Seiten erst noch umgeformt werden.

marabu
  Mit Zitat antworten Zitat
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#7

Re: html-Inhalt des WebBrowsers in Datenbank speichern?

  Alt 14. Aug 2005, 11:20
Hallo marabu,

ohje...

Warum brauche ich das, bei der Speicherung in eine Datei tut es doch auch?


Wie wandelt man den Stream dann in Unicode um?

Edit:
Warum funzt es mit dem Code nicht???
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var
  F1 :TextFile;
  x :String;
begin
  SaveHypertext(WebBrowser1, 'c:\temp\hansi.html');
  AssignFile(F1,'c:\temp\hansi.html');
  Reset(F1);
  read(F1,x);
  ShowMessage(x);
end;
Wenn ich die Datei im Editor öffne steht folgendes drinn:
Zitat:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=unicode">
<META content="MSHTML 6.00.2900.2722" name=GENERATOR></HEAD>
<BODY>dsdfsdfdfdfdfd</BODY></HTML>
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: html-Inhalt des WebBrowsers in Datenbank speichern?

  Alt 14. Aug 2005, 14:54
Hallo Hansi,

schau dir mal die Code-Konverter-Funktionen - z.B. UTF8Decode() - in der unit System an, da sollte Einiges für dich dabei sein.

Zitat von Hansi:
Warum funzt es mit dem Code nicht?
Weil Read(F1, x) äquivalent zu ReadLn(F1, x) ist - du liest so nur die erste Zeile ein. Wenn schon, dann alles einlesen:

Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var
  sl: TStringList;
  fn: string;
begin
  fn := 'c:\temp\hansi.html';
  SaveHypertext(WebBrowser1, fn);
  sl := TStringList.Create;
  sl.LoadFromFile(fn);
  ShowMessage(sl.Text);
  sl.Free;
end;
Es gibt da noch ein paar Dinge zu beachten. Wenn du beliebige Seiten im Internet hernimmst, dann musst du das character encoding der Seite ermitteln und dann vor dem Wegschreiben in den Code übersetzen, der für das BLOB-Feld in deiner Datenbank definiert wurde.

Grüße vom marabu
  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 20:50 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