Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   TXMLDocument als result ausgeben (https://www.delphipraxis.net/174746-txmldocument-als-result-ausgeben.html)

Saulmann 7. Mai 2013 15:00

TXMLDocument als result ausgeben
 
Hallo,

ich versuche gerade ein verändertes XML Dokument mithilfe des Results einer Funktion an eine Procedure zu übergeben.
Delphi-Quellcode:
procedure aendere_XML(name: string);
var
  XML: TXMLDocument;
begin
  XML.FileName := ExtractFileName(openDialog1.FileName);

  //mache etwas

  XML := generiere_neueXML(XML);
  XML.SaveToFile(name+'.xml');
end;

function generiere_neueXML(XML: TXMLDocument): TXMLDocument;
var
  XML_neu: TXMLDocument;
begin
  //fülle xml
 
  result := XML_neu;
end;
Doch leider funktioniert dies nicht.
Ich erhalte folgenden Fehler: EXMLDocError mit der Meldung 'Kein aktives Dokument' aufgetreten.

Wenn ich die XML gleich in der funktion speichere klappt dies aber. Kann mir jemand sagen woran das liegt?
Delphi-Quellcode:
procedure generiere_neueXML(XML: TXMLDocument, name: string);
var
  XML_neu: TXMLDocument;
begin
  //fülle xml -> ergibt xml_neu
 
  XML_neu.SaveToFile(name+'.xml');
end;

Der schöne Günther 7. Mai 2013 15:10

AW: TXMLDocument als result ausgeben
 
http://docwiki.embarcadero.com/Libra....TXMLDocument:

Zitat:

Wenn eine TXMLDocument-Instanz ohne Eigentümer (Owner) erstellt wird, verhält sie sich wie ein Objekt mit Interface-Unterstützung. Die Freigabe der Instanz erfolgt dann automatisch, nachdem alle Referenzen auf ihr Interface freigegeben wurden. Wird ein TXMLDocument-Objekt mit Eigentümer erstellt, ist dieser wie bei jeder anderen Komponente für die Freigabe verantwortlich
Ich tippe mal, du hast es mit Owner=nil erstellt?

Saulmann 7. Mai 2013 15:34

AW: TXMLDocument als result ausgeben
 
@ Günther: update ... möglicherweise hatte ich zu wenig informationen gegeben.
Ich erstelle keine neue xml, sondern erweitere eine vorhandene xml-datei

baumina 7. Mai 2013 15:36

AW: TXMLDocument als result ausgeben
 
Es geht um

Delphi-Quellcode:
XML_neu := TXMLDocument.Create;
XML_neu.Owner := ????

TiGü 7. Mai 2013 16:00

AW: TXMLDocument als result ausgeben
 
Ändere mal die Definitionen von der Klasse auf das Interface.
TXMLDocument -> IXMLDocument aus XMLIntf.pas.
Einfach zu erzeugen durch newXMLDocument aus XMLDoc.pas.

Ich habe noch nie direkt mit der XML-Klasse gearbeitet.
Wahrscheinlich gibt sich bei dir irgendetwas selber frei?

Der schöne Günther 7. Mai 2013 16:09

AW: TXMLDocument als result ausgeben
 
Ja, ich dachte das geht aus dem Hilfe-Zitat so hervor?


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