dll 로 제공된 com 를 사용하는 작업중인데 문제가 좀 있습니다.
dll 에서 해당 TLB.pas 를 추출한 후 아래의 code 를 제 project 에 추가 했습니다.
public 에 추가된 변수 및 FormShow 에 추가된 code 들은 TLB.pas 를 근거로 했으며 실행시
별문제가 발생하지 않았습니다.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, TIBRVCOMLib_TLB;
//TIBRVCOMLib_TLB 은 추가된 unit
type
TForm1 = class(TForm)
Button1: TButton;
edSubject: TEdit;
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
// COM object 를 위한 var..
Tibrv: ITibrv;
TibrvQueue: ITibrvQueue;
Tibrvtransport: ITibrvTransport ;
Tibrvqueuegroup : ITibrvQueueGroup ;
Tibrvlistener : ITibrvListener;
DisplayCount : Integer;
end;
//
procedure TForm1.FormShow(Sender: TObject);
begin
Tibrv := CoTibrv.Create;
Tibrv.open;
TibrvQueue := Tibrv.getDefaultQueue;
Tibrvqueuegroup := Tibrv.getAutoDispatchQueueGroup;
TibrvTransport := CoTibrvTransport.Create;
TibrvTransport.Create('','','');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
TibrvListener := CoTibrvListener.create;
Tibrvqueuegroup.add(TibrvQueue);
TibrvListener.create(TibrvQueue, TibrvTransport,EdSubject.Text, 0 )
TibrvListener
end;
그런데 이 com object 는 TibrvListener 에서 OnMsg 라는 event 발생할수 있도록 되어 있는데
TLB.pas 에는 다음과 같이 정의 되어 있습니다. 아마 아래의 event 를 TibrvListener 에 연결해야 할것
같습니다.
_ITibrvListenerEvents = dispinterface
['{72E9784A-355C-11D3-86AC-00105A07602D}']
procedure onMsg(const listener: ITibrvListener; const message: ITibrvMsg); dispid 1;
end;
이 procedure 에 event가 올경우 실행 되도록 하고 싶은데 연결하는 방법을 모르 겠습니다..
참고로 VB sample source 에서는 다음과 같이 되어 있습니다.
Private Sub listener_onMsg(ByVal listener As TIBRVCOMLib.ITibrvListener,
_ByVal message As TIBRVCOMLib.ITibrvMsg)
com 과 delphi 의 연결을 잘아시는 분 계시면 idea 좀 주세요
그럼 20000