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: Do 01.05.14 18:14 
Hallo zusammen,
ich habe folgendes Problem: In einem String steht ein HTML-Text, wo sich ein Bild drin verbirgt. Dieser String soll dann in einem IHTMLDocument2 gespeichert werden.
Der Inhalt:
ausblenden HTML-Dokument
1:
2:
3:
4:
5:
6:
7:
<html><head><title></title>
</head>
<body bgcolor="#ffffff" leftmargin=10 topmargin=10 rightmargin=10 bottommargin=10>
<font size=3 color="#000000" face="Times New Roman">
<p><img src="Test.jpg"></p>
</font>
</body></html>

Man beachte, der Pfad zum Bild ist relativ!
Jetzt erstelle ich ein IHTMLElement und setzte den innerHTML:
ausblenden Delphi-Quelltext
1:
Element1.innerHTML:= AHTMLCode;					

Danach ist der Pfad total vermurgst bzw. in einen absoluten umgewandelt.
Wie kann man dem Dokument beibringen, dass er die Pfade einfach unverändert lassen soll?

Das Dokument wird "klünstlich" erzeugt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
function GetHTMLDoc2FromString(const AValue: string): IHTMLDocument2;
var SafeArr: PSafeArray;
    Variant: PVariant;
    Value: WideString;
begin
 Result:= CoHTMLDocument.Create as IHTMLDocument2;
 Result.designMode := 'on';
 while Result.readyState <> 'complete' do Application.ProcessMessages;

 SafeArr:= SafeArrayCreateVector(VT_VARIANT, 01);
 if SafeArr <> nil then
 begin
  SafeArrayAccessData(SafeArr, Pointer(Variant));
  Value:= AValue;
  TVarData(Variant^).VType := VT_BSTR;
  TVarData(Variant^).VOleStr := @Value[1];
  SafeArrayUnaccessData(SafeArr);
  Result.write(SafeArr);
 end;


Viele Grüße
Littleben
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: So 04.05.14 20:02 
Hat denn keiner eine Idee? :schmoll:
Das IHTMLDocument3 besitzt ja das Attribut baseURL, was wahrscheinlich bewirken würde, dass die Pfade relativ zu diesem Pfad gesetzt werden.
Solch ein Attribut konnte ich bislang beim IHTMLDocument2 nicht finden. IHTMLDocument2.Location.pathname zu setzen bringt auch nichts.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mo 05.05.14 20:01 
Ohne jetzt nachgeguckt zu haben ob das denn hilft... was hindert dich denn daran, das IHTMLDocument3 zu holen und damit zu arbeiten? Im Allgemeinen macht MS so ein Benennungsschema, wenn ihnen nachträglich einfällt dass sie Methoden vergessen haben (z.B. IShellContextMenu(1-3)), dürfte hier wohl auch so sein.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
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 05.05.14 21:02 
Aber ich kann ein IHTMLDocument3 ja nicht so behandeln wie ein IHTMLDocument2, oder doch? Zudem habe ich gerade versucht das Attrbut baseURL vom IHTMLDocument3 zu ändern und bekam den Error "Nicht implementiert"...
Naja, wie dem auch sei, es scheint nicht so einfach zu sein. Hier hab ich noch ein paar Beiträge mit dem selben Problem gefunden, die mehr oder weniger auch unbeantwortet geblieben sind:
groups.yahoo.com/neo...rsations/topics/8221
drupal.org/node/111635
groups.google.com/fo...wser_ctl/kwlvKhaYDVg
computer-programming...7f8d14c35e80eb34.htm
drupal.org/node/106608