마음의 안정을 찾기 위하여 - [Delphi] TObjectList의 활용
1831182
224
338
관리자새글쓰기
태그위치로그방명록
별일없다의 생각
dawnsea's me2day/2010
색상(RGB)코드 추출기(Color...
Connection Generator/2010
최승호PD, '4대강 거짓말 검...
Green Monkey**/2010
Syng의 생각
syng's me2DAY/2010
천재 작곡가 윤일상이 기획,...
엘븐킹's Digital Factory/2010
[Delphi] TObjectList의 활용
Delphi | 2008/01/21 18:33

TObjectList는 TList를 상속 받아 구현되었다. (Contnrs.Pas)

TObjectList = class(TList)

TList를 상속받았기 때문에, TList와 거의 사용방법이 비슷하다.

TObjectList 클래스에는 OwnsObjects 라는 Boolean형 프로퍼티가 있는데, 이 값이 True이면 TObjectList에서 Item이 삭제되는 경우에 리스트에서의 삭제 뿐만 아니라, 그 Item 객체의 메모리해제까지 자동으로 수행해주며, False이면 객체 자동 소멸 기능이 수행되지 않는다.
그러므로 False로 놓고 사용하면 TList와 동일하게 사용할 수 있습니다.

객체의 메모리 해제가 일어나는 경우는 아래와 같다.

1. Delete, Remove, Clear 메서드를 호출할 때
2. TObjectList 자체가 소멸될 때(TObjectList의 소멸자가 호출될 때)
3. Item에 새로운 Item이 할당(Assign)될 때 (그 Item에 이전에 있던 객체를 Free해 준다)


TList를 사용할때는 매번 폼이나 프로젝트 종료시  FormDestroy 나 관련 함수에서
TList에 있는 Object를 하나하나 꺼내서 Delete 해 줬는데 TObjectList를 사용하는 경우 List만 Delete하면 List에 Add된 Object는 마치 Form에 올려진 Control들 처럼 모두 Delete가 된다.

FList := TObjectList.Create(True); // OwnsObjects is True.

또는

FList := TObjectList.Create;
FList.OwnsObjects := True;

※ Default는 TRUE 임.


아래는 TObjectList의 간단 활용예이다.

TPersonal  = Class(TObject) 
Public 
  Name : String;
  Sex    : String;
  Age    : Integer;
End; 

Function CompareNames(Item1 : TComponent; Item2 : TComponent) : Integer; 
 
implementation
 
procedure TObjListSample.CollectionClick(Sender: TObject); 
var 
  oPersonal : TPersonal; 
  ListPerson : TObjectList;   // Penser ? ajouter l'unit? ContNRS 
 
begin 
  ListPerson := TObjectList.Create ; 
 
  oPersonal:=TPersonal.Create ; 
  oPersonal.Name:='홍길동'; 
  oPersonal.Sex:='남'   ; 
  oPersonal.Age:=69; 
  ListPerson .Add(oPersonal); 
 
  oPersonal:=TPersonal.Create ; 
  oPersonal.Prenom := '이순신'; 
  oPersonal.Sex := '남'   ; 
  oPersonal.Age := 25; 
  ListPerson .Add(oPersonal); 
 
  oPersonal:=TPersonal.Create ; 
  oPersonal.Nom :='신사임당'   ; 
  oPersonal.Sex :='여'; 
  oPersonal.Age :=37; 
  ListPerson .Add(oPersonal); 
 
  ListPerson .Sort(@CompareNames);  
end; 
 
function CompareNames(Item1: TComponent ; Item2: TComponent): Integer; 
begin 
  Result := CompareText((Item1 as TComponent).Name, (Item2 as TComponent).Name) ; 
end;
2008/01/21 18:33 2008/01/21 18:33
Article tag list Go to top
View Comment 0
Trackback URL :: 이 글에는 트랙백을 보낼 수 없습니다
 
 
 
 
: [1] ... [609][610][611][612][613][614][615][616][617] ... [851] :
«   2021/01   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
전체 (851)
출판 준비 (0)
My-Pro... (41)
사는 ... (492)
블로그... (22)
My Lib... (32)
게임 ... (23)
개발관... (3)
Smart ... (1)
Delphi (76)
C Builder (0)
Object... (0)
VC, MF... (9)
Window... (1)
Open API (3)
Visual... (0)
Java, JSP (2)
ASP.NET (0)
PHP (4)
Database (12)
리눅스 (28)
Windows (21)
Device... (1)
Embedded (1)
게임 ... (0)
Web Se... (2)
Web, S... (19)
잡다한... (5)
프로젝트 (0)
Personal (0)
대통령... (9)
Link (2)