type
 TObjID = class(Tobject)
   ManID: string;
   ClientID: string;
  end;
 ...
 ...
for i := DxPickEdit.Items.Count -1 downto 0 do
   TObjID(DxPickEdit.Items.Objects[i]).Free;
 DxPickEdit.Items.Clear;
请教: 
1. DxPickEdit.Items.Objects[i]指的是DxPickEdit中的每条值,那在前面加上个TObjID是什么意思?
2.  TObjID(DxPickEdit.Items.Objects[i]).Free;有了这一句为什么还要加上DxPickEdit.Items.Clear;我感觉这两句的作用好像差不多.
请各位高手解释详细一些,最好从原理上说一说.就剩下38分了,全给各位了
如果我要补一补这方面的知识,请推荐点资料,多谢了  

解决方案 »

  1.   

    1、DxPickEdit.Items.Objects[i])是TObject;
       前面加上个TObjID是将TObject对象转换为TObjID对象
    2、DxPickEdit.Items.Clear;是清除Tstrings中所有Items的,而TObjID(DxPickEdit.Items.Objects[i]).Free;是清除每个Item的中的Object属性,
    (DxPickEdit.Items.Objects[i]).Free需先执行,且是必需的,否则会造成内存泄漏
      

  2.   

    DxPickEdit.Items.Objects[i]) 存的是指向对象的指针
    TObjID(DxPickEdit.Items.Objects[i])是强制 转化为对象,这样才能用 对象的Free方法释放
    ----
    TObjID(DxPickEdit.Items.Objects[i]).Free;
    DxPickEdit.Items.Clear
    两句的作用根本上就是不同的
    TObjID(DxPickEdit.Items.Objects[i]).Free 是释放这个list里面的某个对象占用的内存空间,但是这个对象在这个list还有一个名字,DxPickEdit.Items.Clear就是清除list中与对象相关的指针
      

  3.   

    两句的作用根本上就是不同的
    TObjID(DxPickEdit.Items.Objects[i]).Free 是释放这个list里面的某个对象占用的内存空间,但是这个对象在这个list还有一个名字,DxPickEdit.Items.Clear就是清除list中与对象相关的指针