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
[59414] Re:Re:Re:Re:OpenDialog에 대한 디렉토리 핸들 문제.
범이 [] 2077 읽음    2009-12-10 19:50
파일을 선택하여야 하는 이유 중에 파일에 디렉토리 정보도 함께여서 대안은 쓸 수 없는것 같네요.

원인에 보면 : process의 CurrentDirectory가 변경된다는 것을 말하셨는데

이런 정보를 어떻게 아신 건지 정말 존경 스럽습니다.

이렇게 또 장성호 님의 도움으로 문제를 해결하게 되었네요 감사합니다.


장성호 님이 쓰신 글 :
: 정말 그렇군요..
:
: [대안]
: 단지 작업할 경로를 얻는것이 목적이라면
: OpenDialog를 이용하지 말고 Directory선택 Dialog를 이용하는것은 어떤가요?
: http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=750
:
: 방금 테스트 해보니..
: Directory선택 Dialog는 폴더선택이후에도 폴더 Name변경등이 문제가 없었습니다.
:
:
: [원인은?]
:
: 그리고 좀전에 팁 게시판에 올려뒀는데요..
: http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=943
:
: OpenDialog나 SaveDialog를 통해 File을 선택하면
: process의 CurrentDirectory가 변경됩니다.
:
: 이경우 process의 CurrentDirectory가 파일이 있는 folder가 되기때문에
: folder를 변경할수 없게 된것 같습니다.
:
: 결론적으로
: OpenDialog의 ofNoChangeDir 옵션을 true로 해두면 문제가 해결됩니다.
:
: 그럼..
:
:
:
: 그럼..
:
:
:
: 음 질문이 좀 애매했 님이 쓰신 글 :
: : if(OpenDialog1->Execute())
: : {
: :      // c:\test\tmp\test.txt
: :      Edit1->Text = OpenDialog1->FileName;
: : }
: :
: :  만약 위처럼 선택한 후 폴더 및 파일에 대한 수정작업을 하려고 합니다.
: : 이름 변경, 위치 변경, 삭제 등.
: :
: : 그런데 위처럼 하게 되면 정작 test.txt 파일에 대한 수정에는 문제가 없으나,
: :
: : c:\test\tmp\ 경로에 대한 핸들이 잡혀 있어 디렉토리 명을 변경하는 등에 문제가 발생합니다.
: :
: : OpenDialog가 하는 일은 단지 작업할 경로만 가져와서 수정을 하고 싶은건데.
: : OpenDialog가 핸들을 잡고 있어서 수정이 안되고 있습니다.
: :
: :
: : ///////////////////////////////////////////////////////////////////////////////////////////////
: :
: : heaven2 님이 쓰신 글 :
: : : OpenDialog를 열 때 항상 일정한 디렉토리를 지정하고 싶으신건가요?
: : : 그렇다면..이렇게 하니 되네요.
: : :
: : : OpenDialog1->FileName = "default로지정할 파일명"; // "C:\\Program Files\\aa.txt" 이렇게..
: : : OpenDialog1->Execute();
: : :
: : :
: : : 범이 님이 쓰신 글 :
: : : : 아래의예와 같이 특정 파일을 선택하고 그에 대한 수정작업을 하려고 합니다.
: : : :
: : : : if(OpenDialog1->Execute())
: : : : {
: : : :     Edit1->Text = OpenDialog1->FileName;
: : : : }
: : : :
: : : : 만약 선택한 파일이 c:\test\tmp\test.txt 를 선택하였을 경우에
: : : : 이때 c:\test\tmp\ 디렉토리에 대해 핸들을 잡고 있더라구요.
: : : :
: : : : 정작 파일 자체에는 핸들을 잡지 않고요.
: : : :
: : : : 이렇게 잡혀 있는 핸들을 다시 위 코드처럼 해서 다른 폴더의 파일을 선택하면
: : : : 위 디렉토리의 핸들이 풀리구요
: : : :
: : : : OpenDialog1->FileName = "다른 디렉토리 파일";
: : : : 위처럼 코드상에서 바로 다른 파일을 선택할 때엔 이전 디렉토리가 잡혀 있구요.
: : : :
: : : : 이에 대한 핸들 해제를 어떻게 해야 할지 조언을 부탁 드립니다.

+ -

관련 글 리스트
59380 OpenDialog에 대한 디렉토리 핸들 문제. 범이 2247 2009/12/08
59395     Re:OpenDialog에 대한 디렉토리 핸들 문제. heaven2 2268 2009/12/09
59398         Re:Re:OpenDialog에 대한 디렉토리 핸들 문제. 음 질문이 좀 애매했 1919 2009/12/10
59399             Re:Re:Re:OpenDialog에 대한 디렉토리 핸들 문제. 장성호 2658 2009/12/10
59414                 Re:Re:Re:Re:OpenDialog에 대한 디렉토리 핸들 문제. 범이 2077 2009/12/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.