Autor Beitrag
LittleBen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 258
Erhaltene Danke: 4

Win 7, Mac OS
Delphi 7
BeitragVerfasst: So 23.03.14 15:59 
Hallo,
ich lade ein Dokument aus dem Internet herunter, veränder es und möchte es zum schluss auf der Festplatte speichern (alles ohne TWebBrowser).
ausblenden Delphi-Quelltext
1:
2:
3:
4:
Element1:= FDocument.createElement('div');
Element1.innerHTML:= AText;
{...}
(FDocument.Body as IHTMLDOMNode).appendChild(Element1 as IHTMLDOMNode);

Bisher habe ich das Speichern so probiert:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure SaveToFile(const ADoc: IHTMLDocument2; const AFileName: String);
var PersistFile: IPersistFile;
begin
 PersistFile:= ADoc as IPersistFile;
 PersistFile.Save(StringToOleStr(AFileName), System.True);
end;

Nur leider sieht das File dann genau so aus, wie ich es heruntergeladen habe. Also meine Änderungen wurden nicht übernommen :(
Weiß jemand, wie ich es schaffe, die Änderungen zu speichern?
Der Body ist genau so, wie ich es will (showmessage(FDocument.Body))

Viele Grüße
Littleben
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1321
Erhaltene Danke: 117

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Mo 24.03.14 15:57 
Ich arbeite mit TWebBrowser zum anzeigen, nehme aber den gleichen Weg beim Speichern :
ausblenden Delphi-Quelltext
1:
(WebBrowser.Document as IPersistFile).Save(PWideChar(DestPath+'DestName.html'), false);					

Bei mir klappt es so, sobald der WebBrowser mal angezeigt wurde. Wenn ich ihn nicht anzeigen muss würde er mir eine leere Datei speichern.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
LittleBen Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 258
Erhaltene Danke: 4

Win 7, Mac OS
Delphi 7
BeitragVerfasst: Mo 24.03.14 16:30 
Dann bearbeitest du das Dokument wahrscheinlich nicht.
Das Problem ist, dass ich dem Dokument noch etwas hinzufügen muss. Die Änderungen werde dann komischerweise nicht gespeichert, obwohl sie im Body richtig sind.
LittleBen Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 258
Erhaltene Danke: 4

Win 7, Mac OS
Delphi 7
BeitragVerfasst: Mo 24.03.14 18:16 
Okay, habe es nun geschafft, dass die Änderungen übernommen werden.
Es hat folgender Abschnitt gefehlt:
ausblenden Delphi-Quelltext
1:
2:
3:
 FDocument.designMode := 'on';
while FDocument.readyState <> 'complete' do
 Application.ProcessMessages;


Jetzt habe ich aber das Problem, dass das gespeicherte File irgendeinen komischen Zeichensatz verwendet (nach jedem zeichen ein leerzeichen).
Was ist da los?
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1321
Erhaltene Danke: 117

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Mo 24.03.14 21:43 
Das hört sich schwehr nach Multibyte Zeichensatz an. Schau mal in den Header der HTML, da müsste ja das Encoding stehen. Ist sicher nicht UTF8. Ich kann mich gerade nicht erinnern das ich da was einstellen musste um UTF8 zu bekommen. Wenn ich morgen früh dran denke schaue ich mal nach was das sein könnte. Ich habe hier das ganze Zeug nicht da.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1321
Erhaltene Danke: 117

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Di 25.03.14 10:56 
Setz mal das Charset explizit auf UTF8
ausblenden Delphi-Quelltext
1:
FDocument.CharSet := 'utf-8'					

Vieleicht wird es dann ja richtig gespeichert.
Und, ich verweise mal ganz dezent auf die M$ Hilfe zu dem Thema, falls du das noch nicht kennst ;-)

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?