![]() |
html-Inhalt des WebBrowsers in Datenbank speichern?
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? |
Re: html-Inhalt des WebBrowsers in Datenbank speichern?
Hallo Hansi,
vielleicht hilft dir das weiter:
Delphi-Quellcode:
Grüße vom marabu
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; |
Re: html-Inhalt des WebBrowsers in Datenbank speichern?
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! |
Re: html-Inhalt des WebBrowsers in Datenbank speichern?
Nimm das (ungetestet) noch dazu:
Delphi-Quellcode:
marabu
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; |
Re: html-Inhalt des WebBrowsers in Datenbank speichern?
Hey,
Also, SaveHypertext funzt (fast). Die Zeile:
Delphi-Quellcode:
habe ich mit "//" auskommentiert, weil sonst folgende Fehlermeldung kommt:
if not Assigned(wb.Document) then AssignDocument(wb);
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? |
Re: html-Inhalt des WebBrowsers in Datenbank speichern?
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 |
Re: html-Inhalt des WebBrowsers in Datenbank speichern?
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:
Wenn ich die Datei im Editor öffne steht folgendes drinn:
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; Zitat:
|
Re: html-Inhalt des WebBrowsers in Datenbank speichern?
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:
Delphi-Quellcode:
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.
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; Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 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