Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr
  • 0

두개 프로젝트 공통모듈 이름이 같을 때 TRESTClient 참조가 문제될 수 있습니다.


미스터몽키

질문

델파이 프로젝트 관리자에 2~3개  프로젝트를 Add하여 사용 중입니다.

생산성을 위해 공통 모듈에 TRESTClient 하나를 놓고 각 폼에서 TRESTRequest 에서 공통모듈 TRESTClient 를 연결하여 사용중입니다.

그런데 두개 서로 다른 프로젝트가 공통모듈 이름이 같은 경우 디자인 타임에 설정한 TRESTClient 가 초기화 될 수 있습니다.

새로 델파이 실행하고 프로젝트를 Add 할때  Add 순서에 따라 다른 프로젝트의 공통모듈을 참조하면서 디자인 타임에 설정한  기존  참조가 초기화될 수있습니다.

 

예를들어 두 프로젝트가 같은 이름의 공통 모듈 frmPubDm 을 사용할 경우입니다.

프로젝트A 
  - 공통모듈 PubDm.unit (폼명 frmPubDm)
      RESTClient1


  - 사용하는 유닛 Abc.unit (폼명 frmAbc)
     RESTRequest1, RESTRespone1, DSRestConnection1  ...  
     디자인타임에 frmAbc 폼의 RESTRequest1 속성 Client 에 frmPubDm.RESTClient1 설정함
     
프로젝트B 
  - 공통모듈 PubDm.unit (폼명 frmPubDm)  
      RESTClient 유닛없음

 

델파이 새로 실행하고 프로젝트B 를  프로젝트 관리자 창에 먼저 Add한 상태에서 PubDm 유닛이 오픈되어 있고
여기에 프로젝트A 를 추가 로 Add 하여 두개 프로젝트를 같이 작업하려고 하면

프로젝트A frmAbc 의 RESTRequest1 속성 Client 에 frmPubDm.RESTClient1 정보가 초기화되어 없어집니다.

아마도 A프로젝트가 이미 로드된 B프로젝트의 frmPubDm 을 참조하면서 RESTClient1 이 없기 때문인 것같습니다.

프로젝트A 에 많은 폼들에서 frmPubDm 의 RESTClinet1 을 디자인타임에 참조하고 있는데 해당 폼을 열면 참조가 모두 초기화됩니다.
결국 하드코딩으로 해놔야 안전하단 이야기가 되는데 너무 당황스럽네요 ㅠㅠ 

image.png.0f198b0691fa4457a1709bc5ef4e4b8d.png

 

실험해 보니 TRESTClient 만이 아니라  공통모듈에 올려져있는 TImageList 등도 문제가 되는군요

해결방법은 참조하는 공통모듈을 프로젝트마다 이름을 다르게 해야한다는 이야기가 됩니다.

아니면 델파이를 여러개를 실행하고 각각 프로젝트를 하나씩 Add 하여 사용해야한다는 이야기가 되네요.

일단은 불안해서 하드코딩으로  

RESTRequest1.Client  := frmPubDm.RESTClient1;

변경했습니다.

 

혹시 다른 방법이 있을까요?

 

이 댓글 링크
다른 사이트에 공유하기

1 answer to this question

Recommended Posts

  • 0

다음 2가지 경우에 해당될 것 같습니다.

1. 델파이를 실행 했을때 처음 화면에 열리는 소스가 등록된 프로젝트의 파일과 같은 이름의 다른경로 파일인 경우.

-> 화면의 열린 소스를 모두 닫고 프로젝트 그룹에서 파일을 다시 오픈

2. 프로젝트의 그룹에 있는 하나의 소스가 다른 프로젝트에서 중복되어 같이 포함된경우

 

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 질문에 답변하기...

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.