5,928
社区成员




type PIXMLNode = ^IXMLNode;
function TForm1.CreateTreeview(XmlNode: IXMLNode;
TreeNode: TTreeNode): TTreeNode;
var
i: integer;
ParentTreeNode, CurrentTreeNode: TTreeNode;
pXmlNode: PIXMLNode;
begin
new(pXmlNode);
pXmlNode := @XmlNode;
if XmlNode.HasAttribute('name') then
CurrentTreeNode := TreeView1.Items.AddChildObject(TreeNode, XmlNode.Attributes['name'], pXmlNode)
else CurrentTreeNode := TreeView1.Items.AddChildObject(TreeNode, XmlNode.NodeName, pXmlNode); //pointer(...)
if XmlNode.HasChildNodes then
begin
ParentTreeNode := CurrentTreeNode;
i := 0;
while ((i < XmlNode.ChildNodes.Count) and (not XmlNode.IsTextElement)) do
begin
CreateTreeview(XmlNode.ChildNodes[i], ParentTreeNode);
INc(i);
end;
end;
result := CurrentTreeNode;
end;
后来发现会出错,一直不行,后来发现只要改一句话就行了,
就是下面这句:
pXmlNode := @XmlNode;
改为:
pXmlNode^ := XmlNode;