我在建树的时候用了一个指针L_obj用来保存参数
........
 while not ADOQuery2.Eof do
   begin
   New(L_Obj);
        L_Obj.search_id := ADOQuery2.fieldbyname('tab_id').AsString;
        L_Obj.show_name := ADOQuery2.fieldbyname('tab_name').AsString;
        tmp:=TreeView1.Items.AddChildObject(nil, L_Obj.show_name , TObject(L_Obj));
        adoquery2.next;
 end
数据集有N个记录,树就有N树枝,同时就创建了N个L_obj,问怎样释放树的资源和L_obj的资源呢?
因为N很大,必须要释放

解决方案 »

  1.   

    应该让TreeView去释放或者你把L_obj防到Tlist里面去好了,这样我觉得用也好,释放也好,会更加方便的
      

  2.   

    while not ADOQuery2.Eof do
       begin
       New(L_Obj);
            L_Obj.search_id := ADOQuery2.fieldbyname('tab_id').AsString;
            L_Obj.show_name := ADOQuery2.fieldbyname('tab_name').AsString;
            tmp:=TreeView1.Items.AddChildObject(nil, L_Obj.show_name , TObject(L_Obj));
            adoquery2.next;
       //这里不能先释放么?
     end
      

  3.   


     yuechuan(yuechuan) ( ) 信誉:71 讲:看LZ的意思,估计这些指针以后还有其他用处
    -----------------
    是的,在别的事件中要调用,带入到tree中的这个参数。
      

  4.   

    不要在函数体里面 New,放到外面new,在外面free,因为这个指针不仅仅在这个函数里面派用处
      

  5.   

    for i:=0 to TreeView1.Items.Count-1 do
        Dispose(TreeView1.Items[i].Data);