Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi TXMLDocument.SaveToStream -> Abstract Error (https://www.delphipraxis.net/92511-txmldocument-savetostream-abstract-error.html)

trashcandesign 21. Mai 2007 13:52


TXMLDocument.SaveToStream -> Abstract Error
 
Moin,

ich habe folgende Funktion:

Delphi-Quellcode:
procedure TForm2.MacheXML;
var
  XMLDocument                          : TXMLDocument;
  NodeLevel1, NodeLevel2, NodeLevel3    : IXMLNode;

  i                                    : Integer;

  XMLStream                            : TStream;

begin

  XMLDocument                          := TXMLDocument.Create(self);
  XMLStream                            := TStream.Create;

  CoInitialize(nil);

  with XMLDocument do
  begin
    Active                             := true;
    Version                            := XML_VERSION;
    Encoding                           := XML_ENCODING;

    NodeLevel1                          := AddChild('mpprotocol');
    NodeLevel1.Attributes['version']   := PROTOCOLL_VERSION;

    NodeLevel1                          := DocumentElement.AddChild('request');
    NodeLevel1.Attributes['type']      := 'CONNECTIONS';

    NodeLevel2                          := NodeLevel1.AddChild('connections');

    for i := 0 to ConnectionList.Count-1 do
    begin
      NodeLevel3                        := NodeLevel2.AddChild('Connection'+IntToStr(i));
      NodeLevel3.Attributes['Index']   := IntToStr(i);
      NodeLevel3.Attributes['UsrName'] := TUserData(ConnectionList.Items[i]).UsrName;
      NodeLevel3.Attributes['IPAdress'] := TUserData(ConnectionList.Items[i]).IPAdress;
      NodeLevel3.Attributes['LoginTime']:= DateTimeToStr(TUserData(ConnectionList.Items[i]).LoginTime);
    end;

    SaveToStream(XMLStream);

    Active                       := False;
  end;

  CoUninitialize;
end;
Wenn ich das Ganze in eine Datei speichern lasse, also SaveToFile, dann funktioniert es einwandfrei, aber bei SaveToStream kommt
eine Exception:

Zitat:

Project Project2.exe raised exception class EAbstractError with message 'Abstract Error'.
Die Fehlerbeschreibung hilft mir natürlich sehr weiter *g*
Hat einer von euch ne Idee, was ich falsch mache?

marabu 21. Mai 2007 14:12

Re: TXMLDocument.SaveToStream -> Abstract Error
 
Hallo,

nimm die richtige Stream-Klasse (TFileStream) und nicht die abstrakte Klasse TStream, dann sollte es funktionieren.

Freundliche Grüße

trashcandesign 21. Mai 2007 14:23

Re: TXMLDocument.SaveToStream -> Abstract Error
 
Danke dir.

Für TFileStream brauch ich ja dann eine Datei, oder?
Hab es zwischenzeitlich mit TMemoryStream versucht, das klappt auch.


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