![]() |
TXMLDocument.SaveToStream speichert nicht
Moin,
ein neuer Tag eine neue Frage zum TXMLDocument. Ich habe folgende Funktion um ein XML-Dokument zu erstellen und in einen Stream zu speichern:
Delphi-Quellcode:
Das Problem liegt in der Zeile
function TMPConnection.MakeConnectionStream : TMemoryStream;
type PPInAddr = ^PInAddr; var XMLDocument : TXMLDocument; NodeLevel1, NodeLevel2 : IXMLNode; WSA : TWSAData; PHEn : PHostEnt; Addr : PPInAddr; begin XMLDocument := TXMLDocument.Create(self); WSAStartup( $0101, WSA ); PHEn := gethostbyname( Nil ); //Wird für eigene IP gebraucht Addr := Pointer(PHEn^.h_addr); CoInitialize(nil); with XMLDocument do begin Active := true; Version := XML_VERSION; Encoding := XML_ENCODING; NodeLevel1 := AddChild('mpprotocol'); NodeLevel1.Attributes['version'] := PROTOCOL_VERSION; NodeLevel1 := DocumentElement.AddChild('request'); NodeLevel1.Attributes['type'] := 'LOGIN'; NodeLevel2 := NodeLevel1.AddChild('client'); NodeLevel2.Attributes['IpAddress'] := StrPas(inet_ntoa(Addr^^)); NodeLevel2.Attributes['Mode'] := 'Client'; SaveToStream(Result); Active := False; end; CoUninitialize; end;
Delphi-Quellcode:
Wenn ich das so aufrufe wird der Stream nicht in Result gespeichert.
NodeLevel2.Attributes['IpAddress'] := (inet_ntoa(Addr^^));
Ändere ich das jedoch ab in einen festen String:
Delphi-Quellcode:
wird alles einwandfrei zugewiesen/gespeichert.
NodeLevel2.Attributes['IpAddress'] := '192.168.1.1';
Warum? :gruebel: StrPas gibt mir doch auch einen String zurück, also warum funktioniert das so nicht?? NACHTRAG: Wenn ich Result, oder einen übergebenen Parameter als Parameter für SaveToStream angebe wird es auch nicht gespeichert, wenn ich den String fest reinschreibe. Nur wenn ich eine Stream-Variable deklariere funktioniert das. |
Re: TXMLDocument.SaveToStream speichert nicht
Hallo!
Wo initialisierst du denn Result? Du erstellst nirgendwo einen Memorystream, folglich ist ein Aufruf von SaveToStream(Result) auch böse und dürfte in vielen Fällen mit AVs enden... Cu, Udontknow |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 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