|
어제 폴더 검색 프로그램 만들다가 발견했는데요.
TStrings 클래스에서 Delimiter를 사용할때 공백이 있으면 그것도 하나의 분리자로 인식한다고 합니다.
때문에 "C:\Program Files\Wj Manager" 이런 문자열에서 분리자로 "\"를 쓸 경우에
Strings[0] = "C:"
Strings[1] = "Program"
Strings[2] = "Files"
Strings[3] = "Wj"
Strings[4] = "Manager"
이렇게 반환합니다.
이런한 문제를 회피하기 위해서 경로 문자열의 공백을 Windows에서 경로에 사용 할 수 없는 문자로 대치하고
Delimiter로 구분한 다음 대치 문자를 공백으로 바꾸는 방법을 이용하셔야 할듯합니다.
명확한 답이 아닌 답변을 써서 혼란스럽게 해서 죄송합니다.
고황일 님이 쓰신 글 :
: 제가 전에 썼던 방법인데요
: TStrings의 Delimit를 이용한 방법입니다.
:
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: AnsiString ApplicationPath = "C:\\windows\\systems\\info\\test.bat"; // 테스트를 위해서..
: TStrings *Path = new TStringList; // 스트링리스트를 만들구요
: AnsiString CurrentDrive;
: AnsiString BaseDirectory;
: AnsiString MSG;
:
: Path->Delimiter = '\\'; // 분리자는 '\' 이것을 사용합니다. C언어인관계로 '\\'
: Path->DelimitedText = ApplicationPath; // 분리할 문자열을 넣으시구요
: // 몇개가 분리되었는지는 Path->Count를 이용하여 질의할 수 있습니다.
: CurrentDrive = Path->Strings[0]; // 첫번째 분리자 까지의 문자열
: BaseDirectory = Path->Strings[1]; // 두번째 분리자 까지의 문자열
:
: MSG = "작업 드라이브 : "+CurrentDrive+"\n"+"베이스 디렉토리 : "+BaseDirectory;
:
: ShowMessage(MSG); // 화면에 표시...
:
: }
: //---------------------------------------------------------------------------
:
:
: 빌더초자 님이 쓰신 글 :
: : 현재 실행 중인 프로그램의 디렉토리 정보가..
: : 다음과 같다면..
: : D:\BuilderTest\debug\test1\app
: :
: : 최상단의 해당하는 D:\와
: : D:\BuilderTest를 어떻게 가져오죠?
: :
: :
: : 고수님들 좀 알려주세요!!!
|