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
[46941] Re:Re:Re:현재실행중인 드라이브명이나 최상단 디렉토리 를 가져오려구 하는데요!!
고황일 [hwangil] 1168 읽음    2006-11-01 09:50
Delimiter를 지정해서 문자열 파싱을 할때 공백을 하나의 분리자로 인식하는 문제를 피하는 방법입니다.

TStringList *Strings = new TStringList;
String  Path = "C:\Program Files\Wj Manager";

       ExtractStrings(TSysCharSet()<<'\\', TSysCharSet(), Path.c_str(), Strings);
// 결과
//    Strings[0] = "C:";
//    Strings[1] = "Projgram Files";
//    Strings[2] = "Wj Manager";

      
       delete Strings;

이렇게 쓰면 됩니다.


고황일 님이 쓰신 글 :
: 어제 폴더 검색 프로그램 만들다가 발견했는데요.
: 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를 어떻게 가져오죠?
: : :
: : :
: : : 고수님들 좀 알려주세요!!!

+ -

관련 글 리스트
42386 현재실행중인 드라이브명이나 최상단 디렉토리 를 가져오려구 하는데요!! 빌더초자 997 2005/11/08
42391     Re:현재실행중인 드라이브명이나 최상단 디렉토리 를 가져오려구 하는데요!! 고황일 1028 2005/11/09
42956         Re:Re:현재실행중인 드라이브명이나 최상단 디렉토리 를 가져오려구 하는데요!! 고황일 1081 2005/12/16
46941             Re:Re:Re:현재실행중인 드라이브명이나 최상단 디렉토리 를 가져오려구 하는데요!! 고황일 1168 2006/11/01
42392         [답글감사]현재실행중인 드라이브명이나 최상단 디렉토리 를 가져오려구 하는데요!! 빌더초자 879 2005/11/09
42397             Re:[답글감사]현재실행중인 드라이브명이나 최상단 디렉토리 를 가져오려구 하는데요!! 크레브 942 2005/11/09
42388     Re: 원시적인 방법인데 참고하세요. 김태선 980 2005/11/09
42387     Re:현재실행중인 드라이브명이나 최상단 디렉토리 를 가져오려구 하는데요!! elliclaura 935 2005/11/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.