我定义了一个TobjectList对象,在一个循环中把一个类加入到Tobjectlist中,每次添加的类相同但是类的属性的值不相同,但是结果是对象类表中的类的属性值都是最后一次加入的类的属性值。
var
i:integer;
ObjList:Tobjectlist;
def_Class:TDef;//自定义的类
begin
  objlist:=Tobjectlist.create;
  def_Class:=TDef.create;
  for  i:=0 to  10 do
  begin
    def_class.MID:=i
    def_class.Mname:='name'+inttostr(i);    
    objlist.add(def_class);  
    //结果是加入了10个def_class,但是每个的属性值都是
    //def_class.MID:=10
    //def_class.Mname=name10
    //这是为什么,应该怎么做才行?
  end;end;

解决方案 »

  1.   

    是不是这个原因的啊?
    你每次执行这个过程的时候都是
    objlist:=Tobjectlist.create;
    def_Class:=TDef.create;创建新的这个对象的 所以以前添加的数据就没有了啊
    呵呵 元旦了 元旦快乐...
      

  2.   

    不是吧?创建是在for之外啊
      

  3.   

    var
      i:integer;
      ObjList:Tobjectlist;
      def_Class:TDef;//自定义的类
    begin
      objlist:=Tobjectlist.create;
      for  i:=0 to  10 do
      begin
        def_Class:=TDef.create;
        def_class.MID:=i
        def_class.Mname:='name'+inttostr(i);    
        objlist.add(def_class);  
      end;