지금 작성하고있는 프로젝트에서
여러 EXE 파일과 여러 DLL 을 사용하고있습니다.
(패키지 관련 업무라서 실행파일 하나로 만들수가 없습니다..)
각각의 실행파일이나 DLL 에서는 모두 같은 DataModule 을 사용하고 있습니다.
각각의 파일에 같은 데이타모듈을 붙여야 하는 것이 번거로와
데이타모듈만 들어있는 DLL을 작성해서 사용할려고 하는데 잘 되질않는군요...
모듈에 있는 쿼리에 접근하려하면 에러가 납니다..
제 생각에는 실행파일과 DLL 이 서로 다른 주소공간을 사용하기때문인거 같은데
해결 방법을 찾질못하고 있습니다...
데이타모듈을 생성하는시점에서 현재 실행중인 프로그램의 핸들을 넣어주어야 할것도 같은데..
데이타모듈은 정적으로 바인딩을 하길 원합니다..
(프로젝트 안에서 공통으로 사용하기 때문이죠)
이러한 구조로 만든다는 것은 잘못된 생각인가요 ?
그렇다면 좀더 유연한 구조가 있다면 배워보고 싶습니다...
고수님들의 조언을 기다리겠습니다...
참고로
해본결과 쿼리를 생성하는 시점이 문제더군요..
동적으로 쿼리를 생성하고 사용후 바로 Free 시키면 에러는 없으나
이런 방식이라면 데이타베이스, 쿼리 여러개를 수시로 Create, Free 해주어야 하니
뭔가 찜찜하다는 생각이 들거든요...
흠.. 조은 생각이군여..^^
근데, DLL 이넘이 좀 다루기 어렵져. 사실상 하나의 독립된 어플처럼 행동하거든여..^^
글구, DM 이면 좀더 미묘한 문제가 많져. 가령 예외의 경우, MS-SQL 같은 DB 엔진이 예외를 DM으로 넘겨줘여. 그걸 다시 예외가 발생한 코드로 보내줘여. DM DLL을 하나의 어플로 생각하고, 그걸 사용하는 어플을 생각하면 실제로 3개의 어플리케이션 사이에서 예외가 이동하는 거져..
다시 말하면, Win32 Setting 문제라고도 할수 있을 겁니다..
제가 제글을 읽어도 무슨말인지 모르겠군여. 달리 어떻게 설명해야 할지...
그래서 DM을 공용 Unit으로 만들어 쓰길 권합니다.. Unit은 IDE가 관리하니까 전혀 신경쓸 문제가 없습니다.
즐푸하세여..^^
타락천사...
우동진 wrote:
> 지금 작성하고있는 프로젝트에서
> 여러 EXE 파일과 여러 DLL 을 사용하고있습니다.
> (패키지 관련 업무라서 실행파일 하나로 만들수가 없습니다..)
>
> 각각의 실행파일이나 DLL 에서는 모두 같은 DataModule 을 사용하고 있습니다.
>
> 각각의 파일에 같은 데이타모듈을 붙여야 하는 것이 번거로와
>
> 데이타모듈만 들어있는 DLL을 작성해서 사용할려고 하는데 잘 되질않는군요...
>
> 모듈에 있는 쿼리에 접근하려하면 에러가 납니다..
>
> 제 생각에는 실행파일과 DLL 이 서로 다른 주소공간을 사용하기때문인거 같은데
> 해결 방법을 찾질못하고 있습니다...
>
> 데이타모듈을 생성하는시점에서 현재 실행중인 프로그램의 핸들을 넣어주어야 할것도 같은데..
>
> 데이타모듈은 정적으로 바인딩을 하길 원합니다..
> (프로젝트 안에서 공통으로 사용하기 때문이죠)
>
> 이러한 구조로 만든다는 것은 잘못된 생각인가요 ?
>
> 그렇다면 좀더 유연한 구조가 있다면 배워보고 싶습니다...
>
> 고수님들의 조언을 기다리겠습니다...
>
> 참고로
> 해본결과 쿼리를 생성하는 시점이 문제더군요..
> 동적으로 쿼리를 생성하고 사용후 바로 Free 시키면 에러는 없으나
> 이런 방식이라면 데이타베이스, 쿼리 여러개를 수시로 Create, Free 해주어야 하니
> 뭔가 찜찜하다는 생각이 들거든요...
>