Q&A

  • COM 의 Type library import 및 컴포넌트 사용하기
DLL file  에서 import 된 component 를 test 하는 중입니다.

Delphi 5 의 Project -> Import Type library 를 사용해서 VCL 을 생성한 다음
component 들을 form 에 drop 한후 세부 코딩을 하던 중 다음과 같은 문제에 막혀있습니다.

Delphi component pallete 에 만들어진 component 이름은 TDMQueue 라는 이름으로 만들어져있는데
XXX_TLB.pas 에 가보면 모든 function 및 procedure 들은 IDMQueue 라는 type 으로 사용합니다.


Queue: TDMQueue;  와 같이 선언된 object 를  

procedure Init( newQueue: IDMQueue);  에 넘길수가없어서  - TDMQueue 와 IDMQueue 의 type 차이 때문에

Init(Queue.DefaultInterface); 와 같이 적어주었습니다. 여기까지는 잘 동작하네요.

그런데 반대로
function getDefaltDMQueue: IDMQueue; 라는 함수를 써서

    Queue := getDefaultDMQueue 와 같이 만들수가 없어요. type 이 서로 맞지 않으므로..


Queue.defaultInterface 를 쓰려고해도 읽기전용 property 라서 compile 도 안되고.

TXXX 라는 이름으로 import 된 COM 관련 component 는 왜 method 들의  parameter type 이  IXXX 로 생성되는지요. 이런 문제가 Delphi 6 혹은 7 으로 옮겨가면 해결될 수있나요?

아시는 분 답변 부탁합니다.  
1  COMMENTS
  • Profile
    최용일 2003.02.27 19:43
    안녕하세요. 최용일입니다.

    임포트한 클래스 선언부 보시면 뒤에 COM인터페이스가 같이 들어가 있을겁니다. 형변환해서 사용하세요...

    var
        Queue: TDMQueue;
    begin
        ......
        Init(Queue as IDMQueue);
        ......
    end;

    ^^ 항상 즐코하세요...