Hallo Achim,
was muss ich denn einbinden, damit mein Delphi D2005 den Typen IXMLDOMDocument2 kennt? Ich hab diesen Typen nirgendwo gefunden. Kopier ich dein Beispiel in meine
WIN32-Anwendung und ersetze IXMLDOMDocument2 durch IXMLDOMDocument, bekomme ich trotzdem wieder den gleichen Fehler, dass IStream und TStreamAdapter nicht kompatibel sind.
Für IStream binde ich die
Unit Ole2 ein.
Zitat von
marabu:
Hallo Markus,
er meldet, dass TStreamAdapter und IStream nicht kompatibel sind.
So geht es:
Delphi-Quellcode:
procedure TDemoForm.ButtonClick(Sender: TObject);
var
fs: TFileStream;
dom: IXMLDOMDocument2;
begin
dom := CoDomDocument.Create;
dom.async := False;
fs := TFileStream.Create(ParamStr(1), fmOpenRead
or fmShareDenyWrite);
if dom.load(TStreamAdapter.Create(fs, soReference)
as IStream)
then ShowMessage(
dom.xml)
else ShowMessage(
dom.parseError.reason);
fs.Free;
end;
Freundliche Grüße
Ich hatte zwischendurch auch weiter probiert und so geht es
Delphi-Quellcode:
...
StringStream := TStringStream.Create('');
XMLDoc := CoDOMDocument.Create();
try
StringStream.CopyFrom(Stream, Stream.Size);
XMLDoc.loadXML(StringStream.DataString);
...
Nur dieses sinnlose StringStream.CopyFrom gefällt mir aus Effizienzgründen nicht.
Grüsse
Henryk