在TYPE中定义
PNodeRec = ^TNodeRec;
TNodeRec = record
depid:integer;
depfid:integer;
depname:string;
end;procedure TForm1.loadChilds(pID:integer;pNode:TTreeNode);
var
i,cpID:integer;
aNode: TTreeNode;
begin
//(1)加载子节点
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add('select * from deptab where depfid='+IntToStr(pID));
Query2.Open; Query2.First;
while not Query2.Eof do
begin
cpID:=Query2.FieldByName('depid').AsInteger;
aNode := TreeView_dep.Items.AddChild(pNode,Query2.FieldByName('depname').asstring);
Query2.Next;
end; //(2)递归载入子节点的子节点
for i:=0 to pNode.Count -1 do
begin
LoadChilds(PNodeRec(pNode.Item[i].data)^.depid,pNode.item[i]);
end;end;程序一运行到递归算法时就报读内存地址错,请问为什么呢?我不大会用指针,请各位高手指教!并祝情人节快乐!!谢谢!
PNodeRec = ^TNodeRec;
TNodeRec = record
depid:integer;
depfid:integer;
depname:string;
end;procedure TForm1.loadChilds(pID:integer;pNode:TTreeNode);
var
i,cpID:integer;
aNode: TTreeNode;
begin
//(1)加载子节点
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add('select * from deptab where depfid='+IntToStr(pID));
Query2.Open; Query2.First;
while not Query2.Eof do
begin
cpID:=Query2.FieldByName('depid').AsInteger;
aNode := TreeView_dep.Items.AddChild(pNode,Query2.FieldByName('depname').asstring);
Query2.Next;
end; //(2)递归载入子节点的子节点
for i:=0 to pNode.Count -1 do
begin
LoadChilds(PNodeRec(pNode.Item[i].data)^.depid,pNode.item[i]);
end;end;程序一运行到递归算法时就报读内存地址错,请问为什么呢?我不大会用指针,请各位高手指教!并祝情人节快乐!!谢谢!
LoadChilds(PNodeRec(pNode.Item[i].data)^.depid,pNode.item[i]);
Data 是不存在的地址指针了。