C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[2069] Re:Re:Re:[질문] TList에서 Sort()함수 사용법 좀?
박지훈.임프 [cbuilder] 4320 읽음    1999-10-08 00:00
: 안녕하세요.
: 답변 고맙습니다.
: 근데 전 그게 질문하고 싶었던게 아니라..
: TList클래스에서 Sort()라는 함수가 있던데..
:
: 제가 mdir같을걸 만들어 볼려고 TList로 파일리스트 만들어서
: 출력 부분까지 완성을 했는데.. 이걸 이름순으로 정멸 할려고 하는데
: 방법을 모르겠음.. Sort()함수를 이용하면 될것 같은데 사용법도
: 모르고 해서 그렇습니다.
:
: 혹시 아시면.. 다시한번 답변 좀 부탁드립니다.
: 그럼.. ^^;




임펠리테리입니다.

TList::Sort() 함수는 인자로서 두개의 아이템을 실제로 비교할 함수의 포인터를 받습니다.
이러한 구조를 갖는 것은, TList 클래스는 단지 void 형 포인터를 가지고 있을 뿐이므로
아이템으로 가지고 있는 것들이 실제로 사용자에게 어떤 의미를 갖는지 스스로 알 수가
없기 때문입니다. 아이템이 뭐하는 것인지 모르므로 소트고 뭐고 아무것도 할 수 없는거죠.
(이러한 구조는 vcl에서 자주 쓰입니다.)
예제를 봅시다.

int __fastcall CompareProc(void * Item1, void * Item2)
{
    return strcmp((char *)Item1, (char *)Item2);
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TList *List = new TList;
    for(int i=10; i>=0; i--)
    {
        char *temp = new char[10];
        strcpy(temp, IntToStr(i).c_str());
        List->Add(temp);
    }

    List->Sort(CompareProc);

    for(int i=0; i<List->Count; i++)
        ListBox1->Items->Add((char *)List->Items[i]);
}

위에서 CompareProc()이 실제로 두 아이템을 비교하는 함수입니다. 이 함수의 포인터(코딩에서는
함수의 이름을 넘겨주는 겁니다)를 TList::Sort() 함수의 인자로 넘겨준 것을 볼 수 있습니다.
이 경우, 당연히 비교할 함수(위의 경우 CompareProc 함수)는 프로그래머가 직접 만들어야 하는데,
그 형은 반드시 위와 같은 형이어야 합니다. (이것은 TList::Sort() 함수가 그러한 형의 인자를
갖기 때문.)

그럼 참고하시길...

+ -

관련 글 리스트
2055 [질문] TList에서 Sort()함수 사용법 좀? 강민주 3785 1999/10/05
2064     Re:[질문] TList에서 Sort()함수 사용법 좀? 전태균 3986 1999/10/07
2067         Re:Re:[질문] TList에서 Sort()함수 사용법 좀? 강민주 3595 1999/10/07
2069             Re:Re:Re:[질문] TList에서 Sort()함수 사용법 좀? 박지훈.임프 4320 1999/10/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.