제네릭에는 TCompare 가 준비 되어 있습니다.
앞의 TArray 에서 소팅을 할때 기본적으로 올림차순으로 하였습니다.
자신만의 소팅을 하기위하여
1. 실제 비교 할 방법을 선언하고
private
function iThisCompare(const Left, Right: string): integer;
2. 구현하고
function TForm3.iThisCompare(const Left, Right: string): integer;
begin
Result:= CompareText(Left,Right);
end;
3. 소팅을 합니다.
procedure TForm3.Button4Click(Sender: TObject);
begin
TArray.Sort<string>(iArray,TComparer<string>.construct(iThisCompare))
end;
4. XE 버전 부턴가 익명메소드가 가능해 졌습니다.
위의 2에서 3 단계를 한방에 코딩하면
procedure TForm3.Button5Click(Sender: TObject);
begin
TArray.Sort<string>(iArray,TComparer<string>.construct(
function(const left, right: string): integer
begin
Result:= CompareText(Left, right);
end
));
end;
예전에 TList 에서는 @iCompareName 방법으로 불러 왔었지요.
참고 : MyList.Sort(@CompareName);
댓글 없음:
댓글 쓰기