Hallo,
ich möchte ne Klasse mit SaveToFile und LoadFromFile Methoden schreiben.
Die SaveToFile habe ich:
Delphi-Quellcode:
procedure SaveToFile(AFile: string);
var
i : integer;
begin
with TXMLDocument.Create(Application) do
try
Active:=True;
Options:=[doNodeAutoIndent];
with AddChild('List') do
begin
AddChild('Datum').Text:=DateTimeToStr(Now);
for i :=0 to Pred(Self.Count)do
begin
with AddChild('Item') do
begin
AddChild('User').Text:=Items[i].FUser;
AddChild('Password').Text:=Items[i].FPassword;
end;
end;
end;
SaveToFile(AFile);
finally
//TODO:XMLDokument freigeben ? FEHLER!
end;
end;
Damit bekomm ich zB folgendes Ergebnis:
XML-Code:
<List>
<Datum>18.08.2008 12:52:37</Datum>
<Item>
<User>Benutzer</User>
<Password>Password</Password>
</Item>
<Item>
<User>Benutzer2</User>
<Password>Password2</Password>
</Item>
</List>
Keine Kopfzeile wie ich Sie aus andern
XML-Files kenne
Beim Laden gibts jetz aber ne Menge Probleme. Bzw erstmal eins:
Delphi-Quellcode:
procedure LoadFromFile(AFile: string);
var
i : integer;
lxml : TXMLDocument;
cn : IXMLNode;
begin
Self.Clear;
lxml := TXMLDocument.Create(Application);
with lxml do
try
Options:=Options + [doNodeAutoIndent];
LoadFromFile(AFile);
cn:=ChildNodes[0];//Was genau muss ich hier laden? Habs mit Node und ChildNodes[0] probiert
for i :=0 to Pred(cn.ChildNodes.Count)do //Es wird mir angezeigt das 1 Item existiert, sollten aber 2 sein?
begin
if(cn.ChildNodes.Nodes[i].NodeName = 'AutoItem')then //Zugriffsverletzung bei Adresse 0
begin
with TMyListItem.Create(self) do
begin
FUser:= cn.ChildNodes[i].ChildValues['User'];
FPassword:= cn.ChildNodes[i].ChildValues['Password'];
end;
end;
end;
finally
//TODO: XMLDokument freigeben? FEHLER!
end;
end;
Also was mache ich da beim Einlesen falsch?
Edit:
Wenn ich anstatt
cn:=ChildNodes[0];
nur
cn:=DocumentElement;
schreibe dann gehts.
Aber: Wenn ich im Debugmodus mitm Mauszeiger über NodeName(=> cn.ChildNodes.Nodes[i].NodeName) gehe wird mir eine Zugriffsverletzung angezeigt. trotzdem scheint er die NodeNamen einlesen zu konnen. sehr komisch das Ganze