消息关闭
    暂无新消息!

delphi Stack OverFlow

问题作者 : Hookway2017-07-12发布
如题!下面是代码。想实现遍历全树,然后删除某些没内容的节点。但报Stack OverFlow错误


function TfrmProjCompletedScore.AllOverTreeList(
  node: TcxTreeListNode): TcxTreeListNode;
var
  BNode: TcxTreeListNode;
begin
  while node<>nil do
  begin
    if node.HasChildren then
    begin
      node := node.getFirstChild;
      AllOverTreeList(node);
      if node.Parent <> nil then
        node := node.Parent;
    end
    else
    begin
      if ((Node.Values[tlWBSProjectName.ItemIndex] = NULL)
        or (Node.Values[tlWBSProjectName.ItemIndex] = '')) then
      begin
        if node.Parent <> nil then
          BNode := node.Parent;
        node.Delete;
        node := BNode;
        AllOverTreeList(node);
      end;
    end;
    if node.getNextSibling <> nil then
       node := node.getNextSibling
    else
      Exit;
  end;
end;

procedure TfrmProjCompletedScore.cxButton1Click(Sender: TObject);
var
  ANode : TcxTreeListNode;
begin
  inherited;
  with tlWBS.DataController.DataSource.DataSet do
  try
    tlWBS.BeginUpdate;
    DisableControls;
    Anode := tlWBS.FocusedNode;
    AllOverTreeList(ANode);
  finally
    tlWBS.EndUpdate;
    EnableControls;
  end;
end;

1个回答