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
[19345] [질문] 하느리님...이것좀 봐주세요...
처리 [winsight] 771 읽음    2002-06-14 10:23
다름이 아니라...아래와 같이 알려주는 방식을로 코딩을 했거든요..
저가 봐도 별 문제 없는데...
문제점은 다음과 같습니다...

지정한 위치(원하는 위치에...DATA 라는 폴더를 만들고..거기에 저장하기 원함)에 폴더를 만들고
엑셀 파일 형태로 바꾸어주는 작업을 한 다음에..
저장을 하는데....(C:\Program Files\Application_name\DATA) 형태로..저장하는데..
이게...세이브 다이얼로그 박스가 뜨는데....처음 경로가...[내 문서]로 잡혀 있고..
여기서..저장을 하면....(이때까지..내가 원하는 경로에..DATA..라는 폴더가 안만들어지고..)
[내 문서]에 엑셀파일로 저장은 되고...저장 한 다음에...DATA 폴더가 만들어집니다..
이 같은 경우는 어떻게 해야하나요.?????
참고로...제 PC(win2000)에서는 잘되거든요...근데...다른 PC에서(윈도우98)에서는 위와 같은 경우가
생기더군요....
저가 만든 부분의 소스는 다음과 같습니다..
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
void __fastcall TForm4::Button2Click(TObject *Sender)
{
     AnsiString ExcelFile;

    // String path = ExtractFilePath (Application->ExeName) + (String)"Data";
       String path = ExtractFilePath (ParamStr (0)) + (String)"Data";
    // ShowMessage(path);

     if (!DirectoryExists(path))   //디렉토리가 없으면...
     {
          if(CreateDir(path))      // 디렉토리를 만들고...
          {
           
            SaveDialog1->Execute();   // 세이브 다이얼 로그 박스가 뜬다음..
            ExcelFile = SaveDialog1->FileName;   // 파일이름을 가지고 와서..
            //엑셀로 변환
            SMExportToXLS3->FileName = ChangeFileExt(AnsiString(ExcelFile), ".xls"); 
            SMExportToXLS3->Execute();
            ModalResult = mrOk;
          }
          else
             throw Exception("Cannot create directory.");
     }
     else
     {
          SaveDialog1->Execute();
          ExcelFile = SaveDialog1->FileName;
          SMExportToXLS3->FileName = ChangeFileExt(AnsiString(ExcelFile), ".xls");
          SMExportToXLS3->Execute();
          ModalResult = mrOk;
     }
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
동작은 잘하는데....폴더를 만들고, 저장하는 경로가 문제 입니다..
부탁드립니다...
수고하세요..

======================================================================================
일반적으로 프로그램 소스 내에서는 절대 경로를 사용합니다.
프로그램이 실행된 path를 찾을려면 여러가지가 많은데
String path = ExtractFilePath (Application->ExeName) + (String)"Data";
// 혹은 String path = ExtractFilePath (ParamStr (0)) + (String)"Data";
if (!DirectoryExists(path))
        {
               if(!CreateDir(path))
                    throw Exception("Cannot create directory.");

               // 저장하기 작업이 일어남
        }
        else
        {
               // 저장하기 작업이 일어남
        }


처리 님이 쓰신 글 :
: 다음의 코드와 같이.....인스톨을 한 다음...만약에....
: 폴더가 없으면...그 프로그램의 서브로 디렉토리를 만드는 방법...인데..
: 코드는...
:
: ===================================================================================
: if (!DirectoryExists("..\\DATA"))
:         {
:                if(!CreateDir(".\\DATA"))
:                     throw Exception("Cannot create directory.");
:
:                // 저장하기 작업이 일어남
:         }
:         else
:         {
:                // 저장하기 작업이 일어남
:         }
: =========================================================================================
:
: 그런데...문제는
:
: if(!CreateDir(".\\DATA")) 이부분인데....
:
: 만약에..내가 인스톨을 해서....C:\Program Files\Application_name   이라는 곳에 프로그램이
: 깔렸는데.....Application_name의 하위로...DATA라는 폴더가 없으면...이 폴더를 만들고...
: 있으면...그 곳에 저장하고자 합니다....
:
: 그런데...저가 코딩한 PC에서는 되거든요..
: 근데...인스톨 시디를 만들어서....셋업한 후에.....이 기능을 할려고 하니...까...
: Cannot create directory.........라는 메시지가 나오더군요...
: 이것을 해결할 방법좀...부탁드립니다....
: 꾸벅~~~
:
:

+ -

관련 글 리스트
19345 [질문] 하느리님...이것좀 봐주세요... 처리 771 2002/06/14
19386     Re:[질문] 하느리님...이것좀 봐주세요... 하느리 1050 2002/06/14
19388         하느리님 고맙습니다. 처리 645 2002/06/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.