신호성 10월 25일, 2022에 포스트됨 공유하기 10월 25일, 2022에 포스트됨 Delphi7 소스를 11.2로 마이그레이션 진행했습니다. 마이그레이션한 소스에서 FileOpenDialog 컴포넌트를 추가해 파일 오픈을 실행하면 아래 그림과 같이 좌측 탐색창에 드라이브, 폴더 등이 표시되지 않고 빈 영역만 표시됩니다. 새 프로젝트를 만들어 FileOpenDialog를 추가해 테스트하면 좌측 탐색창에 정상적으로 내용이 표시됩니다. 마이그레이션한 프로젝트가 어떤 특성으로 FileOpenDialog가 어떤 이유로 이상 동작을 하는지 파악할 수 없습니다. 같은 경험을 하셨거나 체크할 포인트를 알고계시는 분들의 답변을 부탁드립니다. 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
2 신호성 10월 27일, 2022에 포스트됨 Author 공유하기 10월 27일, 2022에 포스트됨 원인을 찾았습니다. ImageRes.dll 이라는 파일명이 실행파일과 같은 폴더에 존재하면 File Open Dialog가 오동작합니다. 윈도우 에서 사용하는 리소스 파일과 이름이 같아 발생하는 충돌인것 같은데 리소스 파일 이름이 같다고 드라이브와 폴더 목록이 표시되지 않는 오동작이 발생하는건 좀 이상하네요. 1 2 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
1 c2design 10월 27일, 2022에 포스트됨 공유하기 10월 27일, 2022에 포스트됨 19시간 전, 신호성 said: 원인을 찾았습니다. ImageRes.dll 이라는 파일명이 실행파일과 같은 폴더에 존재하면 File Open Dialog가 오동작합니다. 윈도우 에서 사용하는 리소스 파일과 이름이 같아 발생하는 충돌인것 같은데 리소스 파일 이름이 같다고 드라이브와 폴더 목록이 표시되지 않는 오동작이 발생하는건 좀 이상하네요. 원인을 찾아서 다행입니다. 실행파일이 dll 파일을 찾을 때는 먼저 자신과 같은 경로부터 찾습니다. 그러므로, 실행파일과 같은 경로에 있는 dll 파일이 우선적으로 실행됩니다. 이 경우가 그랬던 것 같습니다. 윈도우 시스템 폴더에 있는 ImageRes.dll 파일이 사용되지 못하고 실행파일이 있는 경로에 있는 이름이 같은 dll 파일(ImageRes.dll)이 사용된 것으로 보입니다. 고생하셨습니다. 1 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
1 어드민 10월 27일, 2022에 포스트됨 공유하기 10월 27일, 2022에 포스트됨 19시간 전, 신호성 said: 원인을 찾았습니다. ImageRes.dll 이라는 파일명이 실행파일과 같은 폴더에 존재하면 File Open Dialog가 오동작합니다. 윈도우 에서 사용하는 리소스 파일과 이름이 같아 발생하는 충돌인것 같은데 리소스 파일 이름이 같다고 드라이브와 폴더 목록이 표시되지 않는 오동작이 발생하는건 좀 이상하네요. 이런 원인이라면 찾기가 참 어려운데, 대단하시네요. 델파이로 만든 것이든 아니든, 윈도우에서는 실행파일이 있는 폴더에 ImageRes.dll라는 이름을 가진 파일을 두면 파일 열기 대화창에 이슈가 생기는 것을 저도 확인했습니다. 1. 빈 텍스트 파일을 만들고, 그 이름을 ImageRes.dll이라고 지정한 후, Notepad++.exe가 들어있는 같은 폴더에 저장 2. Notepad++.exe를 실행한 후 파일 열기 --> 같은 이슈가 재현되었습니다. 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
0 c2design 10월 25일, 2022에 포스트됨 공유하기 10월 25일, 2022에 포스트됨 FileOpenDialog 옵션중에 fdoHideMRUPlaces 항목을 TRUE 로 바꾸니 첨부하신 그림처럼 드라이브 버튼이 사라집니다. 옵션을 바꿔 가면서 체크 해보시거나 강제로 모두 꺼보세요. FileOpenDialog1.Options := []; // 모든 옵션 기본값. 테스트 해보시고 결과 알려 주세요. 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
0 신호성 10월 25일, 2022에 포스트됨 Author 공유하기 10월 25일, 2022에 포스트됨 (edited) Option Property는 설정하지 않은 상태입니다. fdoHideMRUPlaces 설정을 해도 하지 않아도 동일합니다. FileSaveDialog 는 화면 상단 버튼이 서로 겹쳐져 깨져보이는 현상도 나타납니다. Edited 10월 25일, 2022 by 신호성 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
0 c2design 10월 25일, 2022에 포스트됨 공유하기 10월 25일, 2022에 포스트됨 delphi 7 로 되어 있는 소스를 그대로 delphi 11.2 로 빌드하게 되면 vcl 관련되서 사용되는 unit 에서 최신 unit와 다른점 때문으로 유추 됩니다. delphi7 에서 빈 프로젝트를 만드시고 FileOpenDialog 컴포넌트를 하나 올리신 오픈하는 것 하나만 만드시고 마찬가지로 delphi 11.2 에서 빈 프로젝트에 FileOpenDialog 올리고 불러오는 간단한 프로젝트를 만드시고 빌드 하신후에 두개의 소스를 비교해 보시되 자동으로 Uses 절에서 사용하는 Unit들을 체크해서 11.2 버전에 맞춰 주시고 어떤것이 다른가 확인하신후에 마이그레이션 프로젝트에 적용 해보시기 바랍니다. 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
0 Miniuser 10월 26일, 2022에 포스트됨 공유하기 10월 26일, 2022에 포스트됨 (edited) [구성] - [레이아웃]에서 "탐색창" 항목이 선택되어 있는지 확인해보세요. 체크 후에도 동일할 경우, 아래 사이트 참고해보셔도 괜찮을 것 같습니다. 참고 사이트 : https://answers.microsoft.com/ko-kr/windows/forum/all/탐색기에/836ef25c-db06-4a03-9d4e-5e1ad68683e5 또한 위와 동일한 이슈는 아니지만, 네트워크 드라이브가 보이지 않는 이슈에 관련 자료가 있어, 링크 같이 공유해드립니다. 참고해보시면 좋을것 같습니다. 참고 사이트 : https://tech.devgear.co.kr/delphi_qna/427219 Edited 10월 26일, 2022 by Miniuser 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
0 Miniuser 10월 26일, 2022에 포스트됨 공유하기 10월 26일, 2022에 포스트됨 (edited) 30 분 전, Miniuser said: [구성] - [레이아웃]에서 "탐색창" 항목이 선택되어 있는지 확인해보세요. 체크 후에도 동일할 경우, 아래 사이트 참고해보셔도 괜찮을 것 같습니다. 참고 사이트 : https://answers.microsoft.com/ko-kr/windows/forum/all/탐색기에/836ef25c-db06-4a03-9d4e-5e1ad68683e5 또한 위와 동일한 이슈는 아니지만, 네트워크 드라이브가 보이지 않는 이슈에 관련 자료가 있어, 링크 같이 공유해드립니다. 참고해보시면 좋을것 같습니다. 참고 사이트 : https://tech.devgear.co.kr/delphi_qna/427219 동일한 이슈에 대한 자료를 찾았는데, 다양한 원인들이 있어, 확실한 해결방법은 없는것 같습니다. 우선 1. 내부 소스에 따로 설정하는 다시 확인해보세요. 2. 관리자 권한 설정 및 기타 설정을 확인해보세요 3. 기본 경로를 지정하신후 실행해보시기 바랍니다. Delphi FileOpenDialog1.DefaultFolder = 'C:\'; C openFileDialog.InitialDirectory = 'C:\'; 또한 아래 해당 게시글 링크를 올려드렸습니다. 작업에 참고 부탁드립니다. 참고 사이트 : https://stackoverflow.com/questions/46343063/openfiledialog-does-sometimes-show-empty-navigation 참고 사이트2 : https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.filedialog.initialdirectory?view=windowsdesktop-6.0 Edited 10월 26일, 2022 by Miniuser 1 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
0 신호성 10월 26일, 2022에 포스트됨 Author 공유하기 10월 26일, 2022에 포스트됨 (edited) 답변 감사합니다. 레이아웃/탐색창 보기 설정 문제는 아닙니다. DefaultFolder 를 지정해도 동일합니다. 네트웍크드라이브가 표시되지 않는 문제는 당시 제가 문의하고 자답했던 내용입니다. FileOpenDialog를 사용하는 unit에서 Uses 절에 Dialogs > Vcl.Dialogs Winapi.Window, Data.DB, Datasnap.DBClient 등 모든 Uses 항목을 변경하고 컴파일 해도 현상은 동일합니다. 일단 전체 소스가 1000본이 넘어서 모든 소스의 uses절을 수정하지 않았고 FileOpenDialog를 사용하는 unit 만 수정해봤습니다. 시간이 걸리겠지만 1차적으로 모든 unit 의 Dialogs만 vcl.Dialogs 로 수정한 후 테스트하겠습니다. 그래도 현상이 동일하면 시간이 많이 소요되겠지만 모든 소스의 uss절 항목에 Unit Scope Name을 지정하고 테스트해보겠습니다. Edited 10월 26일, 2022 by 신호성 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
0 신호성 10월 26일, 2022에 포스트됨 Author 공유하기 10월 26일, 2022에 포스트됨 (edited) 모든 소스의 uses절을 수정하는 대신 (소스가 너무 많아서...) Project > Options.. > Delphi Compiler > Unit aliases 항목을 오픈해서 아래와 같은 형식으로 정의하면 모든 소스를 변경하지 않아도 같은 효과를 얻을 수 있나요? Dialogs=vcl.Dialogs Windows=Winapi.Windows Edited 10월 26일, 2022 by 신호성 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
0 c2design 10월 27일, 2022에 포스트됨 공유하기 10월 27일, 2022에 포스트됨 프로젝트 전체 소스에 적용은 나중에 원인이 파악 된 후에 적용 하시고 위 증상이 재현 될 수 있는 샘플 프로젝트를 만들어서 테스트를 해보시는게 좋을것 같습니다. 재현되는 샘플 프로젝트를 저희쪽에 제공 해주셔도 좋습니다. 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
질문
신호성
Delphi7 소스를 11.2로 마이그레이션 진행했습니다.
마이그레이션한 소스에서 FileOpenDialog 컴포넌트를 추가해 파일 오픈을 실행하면
아래 그림과 같이 좌측 탐색창에 드라이브, 폴더 등이 표시되지 않고 빈 영역만 표시됩니다.
새 프로젝트를 만들어 FileOpenDialog를 추가해 테스트하면 좌측 탐색창에 정상적으로 내용이 표시됩니다.
마이그레이션한 프로젝트가 어떤 특성으로 FileOpenDialog가 어떤 이유로 이상 동작을 하는지 파악할 수 없습니다.
같은 경험을 하셨거나 체크할 포인트를 알고계시는 분들의 답변을 부탁드립니다.
이 댓글 링크
다른 사이트에 공유하기
11 answers to this question
Recommended Posts
이 토의에 참여하세요
지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.