一个Image类其中有成员变量FMMJPEG存放一张图片的流数据。
多个Image类通过Tstring.AddObject加入列表中。然后用TStringList.objects取出其中一个类。第一次取出FMMJPGE里面是有数据的,但第二次时,就没有数据。
应该是Objects方法,在取出类时,并不是考贝FMMJPEG中的数据。所以第二次取出时,就没有了数据,请问该如何解决?

解决方案 »

  1.   

    我没有做过释放动作
      TImageJPEG = class
      private                                                 //存图片
        FImageShapid: String;
        FImageDateTime: string;
      public
        FImage: TMemoryStream;
        property ImageShapid: String Read FImageShapid Write FImageShapid;
        property ImageTime: String Read FImageDateTime Write FImageDateTime;
      end;
    这个是存放图片的类function TSearchObjectForm.GetImage(AID: String):TImageJPEG;
    var
      I: integer;
    begin
      I := Flst.IndexOf(AID);
      if I < 0 then result := NIL
      else result := TImageJPEG(Flst.Objects[I]);
    end;这是读取图片类的GetImage方法,第一次读取正常,第二次能读出标记为AID的类,但其中FImage成员变量却没有数据
    这里没有用到指针啊,有没有方法把Flst.Objects中的类考贝出来?
    谢谢以上二位的关注
      

  2.   

    我觉得不是StringList的原因,因为StringList的Objects只是保存了对象的引用,而不是保存对象本身,即使你把StringList释放了,里面的对象也不会被释放的。也许楼主可以在其它地方找找原因。