2012년 10월 18일 목요일

제네릭 이해를 돕기 위한 간단한 사용(TCompare)

제네릭에는 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);




댓글 없음:

델파이 12.1이냐 11.3이냐?

 델파이가 12.1이 나왔습니다. 혹시 11.3버전의 커뮤니티버전이 필요하시는분이 있을 수 있을 것 같아 https://altd.embarcadero.com/.../RADStudio_11_3_esd_28... 와 이것 찾느랴 엄청고생함.