|
xiles 님이 쓰신 글 :
: TList의 sort를 사용하냐 안하냐 하는것은 전혀 상관이 없습니다.
: TList에서 sort 하는 것은 사용자가 정의한 (어떤 것을 앞쪽에 어떤것을 뒤쪽에 위치시킬지 비교하는) 함수를
: 사용하기 때문이죠..
:
: CompareProc 안의 내용을 어떻게 채우느냐에 따라 TList의 sort는 사용자 마음데로 할 수 있습니다.
: 아래 소스에 보면 strcmp 함수를 사용하셨는데, lstrcmp 함수를 사용해보세요.
:
: 스트링 비교함수들도 여러가지가 있는데..각각 어떤 기준으로 비교를 할지 다릅니다.
: lstrcmp 함수의 경우에는 윈도우 언어 설정에 맞추어서 정렬을 하게 되어 있습니다.
: CompareString 함수 같은 것을 쓰면, 특정 locale에 맞추어서 정렬을 할 수도 있습니다.
:
: 장동훈 님이 쓰신 글 :
: : //아이템 정보
: : class TFileInfo : public TObject
: : {
: : public:
: : __fastcall TFileInfo();
: :
: : AnsiString strFileName;
: : AnsiString strFileExtName;
: : };
: :
: : __fastcall TFileInfo::TFileInfo()
: : {
: : strFileName = "";
: : strFileExtName = "";
: : }
: :
: : //정렬 함수
: : int __fastcall CompareProc(void * Item1, void * Item2)
: : {
: : return strcmp((char *)((TFileInfo *)Item1)->strFileName.c_str(),
: : (char *)((TFileInfo *)Item2)->strFileName.c_str());
: : }
: :
: : //파일정보 입력
: : TList *pList = new TList;
: :
: : FindFirst(gPath+"*.*", faAnyFile, SearchRec);
: : do
: : {
: : TFileInfo *tInfo = new TFileInfo;
: : tInfo->strFileName = SearchRec.Name;
: : pList->Add(tInfo);
: : }while((FindNext(SearchRec) == 0));
: : FindClose(SearchRec);
: :
: : pList->Sort(CompareProc);
: : --------------------------------------
: : 위와 같이 폴더당 파일 이름을 얻어와 TList를 이용하여 리스트를 구현 하였습니다. 정렬 방법을 고민하다, TList의 sort기능 있다는걸 보고 게시판을 검색하여 sort방법을 구현 하였습니다
: : 근대 정렬 결과가 탐색기랑 비교햇을때 다르게 나오더군여
: :
: : #탐색기 d:드라이브로 볼시
: : __Ex__
: : 유틸들
: : windows
: :
: : #pList 소트시 보기
: : windows
: : __Ex__
: : 유틸들
: :
: : 위와 같은식으로 영문이 먼저 정렬되고 그리고 특수 문자가 정렬되고 한글폴더명이 정리되는것 같은데요..
: : 어떻게 하면 탐색기와 같이 특수 문자 정렬휴 한글 정렬후 영문으로 정렬되나요??
: : TList의 sort를 이용하지 않고 따로 정렬 루틴을 구현해주어야하는건가요??
: : 궁금합니다..
|