Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi MSXML und Streams. Bin ich zu blöd? (https://www.delphipraxis.net/86728-msxml-und-streams-bin-ich-zu-bloed.html)

Henryk 18. Feb 2007 18:29


MSXML und Streams. Bin ich zu blöd?
 
Hallo,

ich hab einigen Beispielcode im Netz gefunden, der aber bei mir einfach nicht kompiliert werden kann.

Delphi-Quellcode:
procedure Test(const Stream: TStream);
var
  Adapter: IStream;
  XMLDoc: IXMLDomDocument;
begin
  XMLDoc := CoDOMDocument.Create();

  // Fehler in dieser Zeile aus den Beispielen:
  // TStreamAdapter und IStream sind nicht kompatibel
  Adapter := TStreamAdapter.Create(Stream, soReference);

  // Fehler in dieser Zeile aus den Beispielen:
  // OleVariant und IStream sind nicht kompatibel
  XMLDoc.load(Adapter);

  usw.
Was mache ich falsch? Bei den Beispielen scheint es ja zu funktionieren?

Grüsse

Henryk

mkinzler 18. Feb 2007 19:08

Re: MSXML und Streams. Bin ich zu blöd?
 
Welcher Fehler meldet der Compiler als Grund?

marabu 18. Feb 2007 19:26

Re: MSXML und Streams. Bin ich zu blöd?
 
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

mkinzler 18. Feb 2007 19:40

Re: MSXML und Streams. Bin ich zu blöd?
 
Hallo Achim,
ich habe mir den Code nicht angeschaut. Ich bin halt der Meinung, daß der Fragesteller die geanue Fehlermeldung angibt wenn er Hilfe erwartet.

marabu 18. Feb 2007 19:50

Re: MSXML und Streams. Bin ich zu blöd?
 
Ich hatte die Fehlermeldung nicht reproduziert, sondern lediglich zitiert - allerdings ohne das Zitat als solches kenntlich zu machen:

Zitat:

Zitat von Henryk
Delphi-Quellcode:
// ...
// Fehler in dieser Zeile aus den Beispielen:
// TStreamAdapter und IStream sind nicht kompatibel
Adapter := TStreamAdapter.Create(Stream, soReference);
// ...

Freundliche Grüße

mkinzler 18. Feb 2007 19:54

Re: MSXML und Streams. Bin ich zu blöd?
 
Das habe ich nicht gesehen. :oops:

Henryk 18. Feb 2007 19:55

Re: MSXML und Streams. Bin ich zu blöd?
 
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:

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

marabu 18. Feb 2007 21:20

Re: MSXML und Streams. Bin ich zu blöd?
 
Hallo Henryk,

ich habe mit D7 getestet und die Units ActiveX und MSXML2 eingebunden.

Gute Nacht


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 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