Q&A

  • objectlist에서 delete시 에러문제..(OwnsObjects = true시)
안녕하세요.
tlist를 사용하다가 objectlist 가 메모리관리에 편리하다고 해서 사용하는데
에러가 나서 이렇게 질문 드립니다.


type

TTest = ^TTreeInfo;
TTreeInfo = record
   Name  : string;
   point: string;
end;
~~~
~~~
  private
    objlist TObjectList;
    testrec : TTest;

~~~~
~~~~

procedure TForm1.FormCreate(Sender: TObject);

begin
  objlist := TObjectList.Create(true);
end;


procedure TForm1.Button1Click(Sender: TObject); //insert
var i :integer;
begin
   New(testrec );
   testrec ^.Name := edit1.text;
   testrec ^.Point := edit2.text;
   objlist .Add(Pointer(Test_a));  
  
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
     objlist .OwnsObjects := true;
   //질문1:true로 설정하면(디폴트가 true)  delete,clear 등을 하면 자동으로 메모리에서 해제한다고 help에 나와 있는데
    objlist .Delete(0); // ---> 여기서 에러가 나더군요
    //objlist .OwnsObjects := false; 로 두면 에러는 나지 않고요.
   //질문2 : 만일에 false를 선택해서 마지막에 objlist .Free; 만하면 자동적으로    그    리스트까지도 다 메모리에서 해제가 되는지 궁금합니댜
end;

2  COMMENTS
  • Profile
    장태원 2004.03.11 02:51
    TObjectList 에서 사용가능한 객체로는

    포인터는 안될듯 하며,

    TObject  계열의 객체만 지원되는거 같습니다. ㅅㄱ



  • Profile
    이은주 2009.11.13 07:56
    포인터를 쓰려면 TList 를 써야 하지 않나요 ?
    TObjectList 는 객체를 위주로 넣는 것으로 알고 있습니다.