회사에 입사한 2개월이 조금 넘는 동안 이런 저런 소스분석 할 때 마다 나오는 것이 있었다.
그것은 바로 TList와 TStringList!!
매우 자주 사용되고 있었다.
하지만 나에게는 너무 어렵고 복잡하기만 했다 그래서 사용하지 않아볼까 생각도 했지만
워낙 많이 사용되어 피해 갈 수 없었다.
이 두가지 중 TStringList에 대해서 적어보려한다.
TStringList와 TList의 차이는 스트링 자체를 갖는 것과 포인터를 넘기는 차이가 있다.
TStringList는 델파이 유닛중 Classes라는 유닛에 기본적으로 포함되어 있는 클래스다.
위와 같이 TStrings를 상속 받고 있다. TStrings와 TStringList는 다르다.
TList -> TStrings -> TStringList
이 클래스는 문자열을 효율적으로 관리하기 위한 클래스다.
알아두면 여러모로 사용할 곳이 많은 함수이다.
TStringList는 다른 클래스와 다름없이 변수를 선언하고 Create를 하고 사용한다.
Create를 한 후에는 Free가 반드시 따른다.
Var
MyList: TStringList;
begin
MyList:= TStringList.Create;
…….
MyList.Free;
다음은 TStringList를 이용한 예제이다.
우선 TStringList를 생성하고 리스트에 String을 Animals, Flowers, Cars를 추가해 보자.
procedure TForm1.FormCreate(Sender:TObject);
var
MyList: TStringList;
Index: Integer;
begin
MyList := TStringList.Create;
try
MyList.Add('Animals');
MyList.Add('Flowers');
MyList.Add('Cars');
ListBox1.items.AddStrings(MyList);
finally
MyList.Free;
end;
end;
ListBox에 Animals, Flowers, Car순으로 정렬되어 나올 것이다.
여기에서 정렬을 하고 싶다면 MyList.Sort를 추가해 주면 된다.
TStringList에는 Sort함수가 있다.
이 Sort 함수는 string을 내림차순으로 정렬한다.
오름차순은 기본 Sort함수로는 안될거 같고 CustomSort라는 메소드를 이용 할 수도 있다.
함수를 호출하면 compare함수를 넘겨준다.
TStringListSortCompare는 Classes 유닛에 선언 되어있으므로 TStringListSortCompare 모양의 함수를 하나 선언하고 함수 내부에서 index1과 index2의 string을 가져와서 비교할 때 string을 integer로 변환해서 비교해야 한다.
그리고 결과를 Result로 return해주면 된다.
'엑셈 기업문화 > 엑셈 사람들' 카테고리의 다른 글
[이홍원]IPCS 이야기 (1) | 2009.01.16 |
---|---|
[신형규]달면 삼키고 쓰면 뱉는다. (0) | 2009.01.09 |
[한승민]Top down 방식이 아닌 Thread 단위의 트랜잭션 개별 분석 방법 (1) | 2008.12.09 |
[이명진]아침공부편: "대용량 데이터베이스를 위한 오라클 SQL 튜닝" 저자특강 세미나 (3) | 2008.11.27 |
[신용범]경험은 곧 힘이다 (0) | 2008.11.21 |
댓글