Einzelnen Beitrag anzeigen

DamienHoo

Registriert seit: 31. Aug 2009
1 Beiträge
 
#1

seltsames verhalten von IXMLNode

  Alt 31. Aug 2009, 17:43
hi,

ich hab ein wirklich seltsames problem mit IXMLNode und ich komm einfach auf keinen gruenen zweig. vielleicht hat jemand eine idee woran es liegen koennte.

meine procedure soll die tage eines jahres in eine xmldatei schreiben. die daten werden vorher in einer schleife erstellt (weil da noch die kalenderwoche und der tag der woche und so dazu muss) und werden in einem dafuer vorgesehen record im speicher gehalten.

in der schleife wird dabei (ausgehend vom startdatum bsp: 1.1.2009 welches als TDateTime vorliegt) nach jedem durchlauf der TDateTimeWert via IncDay aus den dateutils um 1 erhoeht.
die schleife lautet ungefaehr:

Delphi-Quellcode:
for i=1 to iTageImJahr do begin
   fuelle die records
   ...
   IncDay(aktuellerTag,1);
end;
danach dann werden die knoten der xmldatei aufgrund der daten gebaut.

nachdem die ersten beiden knoten via
Delphi-Quellcode:
fXMLDoc : IXMLDocument
node,node2: IXMLNode;


fXMLdoc := newXMLDocument;
fXMLdoc.Encoding := 'iso-8859-1';
node := fXMLdoc.AddChild('data').AddChild('jahr');

node2 := node.AddChild('kw_1');
erstellt wurden, stuerzt das programm beim naechsten knoten (node2) mit einem speicherfehler ab.
obwohl node2 eigentlich nil sein sollte ist es das zur laufzeit nicht sondern es ist ein pointer auf ein IXMLNode Objekt aber NUR wenn ich das TDateTime in der schleife erhoehe. kommentiere ich das IncDay aus (was die daten dann sinnfrei macht) passiert das nicht und alle knoten im xml-baum werden angelegt weil node2 bis zur zuweisung nil bleibt.

hat irgendwer eine ahnung was da passiert ?

zur info:
* das ganze passiert in einer klasse, fXMLdoc ist eine private klassenvariable, die nodes ebenso wie alles andere sind lokale procedure variablen.
* IncDay macht nix weiter als einen TDateTime value mit der anzahl tage zu addieren (in diesem fall also result := value+1)
* node und node2 werden nirgends verwendet und sich auch nicht global.



fuer anregungen waer ich super dankbar weil mir faellt kein logischer grund fuer diesen fehler ein.



mfg
damien
  Mit Zitat antworten Zitat