C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[943] [Dialog] OpenDialog의 옵션의 ofNoChangeDir 란?
장성호 [nasilso] 13573 읽음    2009-12-10 02:44
OpenDialog의 옵션의 ofNoChangeDir 란?

OpenDialog의 옵션엔 여러가지가 있는데
그중에  ofNoChangeDir 라는게 있습니다.

이름만들 봤을땐..
ofNoChangeDir=true로 설정해주면

Dialog로 특정 폴더에 파일을 선택하여도
다시 Dialog를 열었을때 시작폴더가 바뀌지 않고 그대로 있게 하겠다는 옵션 같습니다.

저 처럼 이해한 사람 혹 있지 않나요?

하지만
ofNoChangeDir 란 옵션은 Dialog의 시작폴더랑 전혀 상관이 없습니다.

ofNoChangeDir 옵션은?
   현재 process의 CurrentDirectory와 관계가 있습니다.
 
   예전에 Current-Directory에 대한 글을 올린적이 있습니다.
   http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_tip&no=806

   위 링크 글에 보면  Current-Directory가 바뀌는 경우 중에
   OpenDialog나 SaveDialog로 Dialog를 열어서 파일을 선택하면  CurrentDirectory가 바뀐다는 글이 있습니다.

   일반적으로 대부분의 process에서 맨처음에 Current-Directory는 exe가 있는 폴더가 됩니다.
   (아닌경우도 있음)
  
   CurrentDirectory 폴더의 file은 경로를 따로 주지 않아도 file을 open할때 문제가 없죠
   
   그런데 OpenDialog나 SaveDialog로 파일을 선택할경우 CurrentDirectory가 바뀌기 때문에..
   OpenDialog로 exe폴더가 아닌 다른 폴더의 file을 한번 선택한후에..
   exe폴더의 file을 경로를 주지 않고 열려고 하면 file이 없다는 에러가 뜨게 됩니다.
   왜냐하면 OpenDialog를 통해 File을 선택할때 process의 CurrentDirectory가 바뀌어 버렸기 때문이죠

ofNoChangeDir 옵션을 true로 해주면.
Dialog를 열어서 파일을 선택하여도 process의 CurrentDirectory가 바뀌지 않는다는 뜻입니다.


파일을 어느 폴더에 있는 파일을 선택하게 될지 모르니..
가능하면 OpenDialog , SaveDialog의 ofNoChangeDir 옵션을 항상 true로 해놓고 쓰는것이
문제발생 가능성을 줄여줄것 같습니다.

추신
오늘 Q&A게시판에 올라온 질문을 통해서 알게된것인데요
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=59399
ofNoChangeDir 를 true로 해두지 않는경우
OpenDialog로 열었던 folder를 변경하고자 할경우 process가 잡고 있기때문에 불가능합니다.


그럼..

+ -

관련 글 리스트
943 [Dialog] OpenDialog의 옵션의 ofNoChangeDir 란? 장성호 13573 2009/12/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.