Hey
entschuldigung dass ich mich nicht deutlich gemacht hatte!
ich benutze die NativeXML-Library schon seit einiger zeit,
dennoch ist es für mich das erste mal das ich die Library in einem loop verwende.
in dem demo code hat er eine funktion die in der NativeXML so nicht existiert oder wird anders benutzt!?
und zwar vor dem loop wird die funktion
Node.ChildNodes.First;
aufgerufen.
anyways das ist mein versuch den code anzupassen.
Ps. wie schon gesagt wenn jemand eine bessere lösung hat....
Delphi-Quellcode:
function TMain_Form.Load_File(FileName :
String) : Boolean;
var
pNode : PVirtualNode;
Data : PNodeData;
XML : TNativeXml;
iNode : TXmlNode;
procedure ProcessNode(pNode : PVirtualNode; iNode : TXmlNode);
var cNode : TXmlNode;
begin
if iNode =
nil then
exit;
with iNode
do
begin
Data:= VT.GetNodeData(pNode);
pNode:= VT.AddChild(pNode);
// Data^.Title:= iNode
end;
(* Original cNode := Node.ChildNodes.First; *)
cNode:= iNode.;
// <------------------- problem?
while cNode <>
nil do
begin
ProcessNode(pNode, cNode);
cNode:= cNode.NextSibling(cNode)
end;
end;
begin
VT.Clear;
try
XML:= TNativeXml.CreateName('
password manager');
XML.LoadFromFile(Filename);
except
on E:
Exception do
begin
if (Assigned(
XML))
then
FreeAndNil(
XML);
Exit;
end;
end;
try
(* Original iNode := XMLDoc.DocumentElement.ChildNodes.First; *)
iNode:=
XML.RootNodes.FindFirst;
while iNode<>
nil do
begin
ProcessNode(
nil, iNode);
iNode:= iNode.NextSibling(iNode);
end;
if (Assigned(
XML))
then
FreeAndNil(
XML);
Result:= True;
except on E:
Exception do
begin
if (Assigned(
XML))
then
FreeAndNil(
XML);
end;
end;
end;