DELPHI里面的递归最多可达到多少级呀。我的一个代码管理的模块中,将数据添加到树时使用了递归过程,但是当数据量大了的时候就提示“未知的错误” 我想是递归层数的问题。
如果对递归的层数真的限制,那么这样的树型结构该怎样办啊。
急死人了。

解决方案 »

  1.   

    如果使用堆,那么我在递归中调用了其它的类,那么这些类怎样申请堆空间呢?变量可以用NEW,可对象怎以办呀?
      

  2.   

    我是C/C++语言出身的,
    对Delphi的了解不多,
    我只知道如果在C++语言中,
    可以用以下方法实现:
    在函数中定义所要使用的类的指针,
    然后在函数中为类申请内存,
    这样堆栈上就只占用指针的空间,
    而类就分配在堆上了,
    //Pascal中好象也有指针吧,我记得好象有个link
      

  3.   

    Project -> Project Option -> Linker 
    Max Stack Size 设大点试试看。没做过大的递归,我想你可以把类数据和类函数分开来。每次NEW一个类数据,这样会省下不少栈空间的。
      

  4.   

    谢谢大家的热心解答!!!!
    我在递归过程里,用了一个指针型的记录,我是手工给它分配空间的(堆),但是有一个TADOQuery,不怎样对它进行分配空间,现在在调试环境的时候提示的就是它出错,[TADOQuery].OPEN报错。我想应该是栈空间的问题吧。
    还请高手给实例的代码
      

  5.   

    每次递归都创建一个?差不多这样子,你试试吧!var
      LADOQuery1: TADOQuery;
    begin
      LADOQuery1 := TADOQuery.Create( nil );
      LADOQuery1.ConnectionString := 'XXX';
      LADOQuery1.SQL.Add( 'XXX' );
      LADOQuery1.Open;
      //Enjoy
      LADOQuery1.Close;
      LADOQuery1.Free;
    end;
      

  6.   

    [TADOQuery].OPEN报错原因很多,错误提示是什么?
      

  7.   

    这种错误很难除的,帮不了你了,wish you luck!!!