고수님들...
아래 소스좀 봐주세요..
랑데뷰 통신... 바닥부터 헤매다 어렵게 어렵게 Listen 까지는 왔네요...
허나,,, Listener 에서 OleVariant 타입으로 전송된 메세지를 형변환하여 받아 먹어야 하는데
//IDispatch Fail, 형변환 실패... 주석의 라인에서 형변환이 Fail 로 반환됩니다.
해결책 알고계신분 도움좀 부탁드립니다.
{*----------------------------------------------------------------------------*}
{* TibrvListener1onMsg *}
{*----------------------------------------------------------------------------*}
procedure TForm1.TibrvListener1onMsg(Sender: TObject; var listener, message: OleVariant);
var
i, j, numfields, fldid: integer;
msgdata, fldname, fldtype: string;
AListener: ITibrvListener;
AMessage: ITibrvMsg;
begin
MSGCountP.Caption := IntToStr(StrToIntDef(Trim(MSGCountP.Caption), 0) + 1);
if Succeeded(IDispatch(listener).QueryInterface(IID_ITibrvListener, AListener)) then begin //IDispatch Fail, 형변환 실패~
ShowMessage('listener : ' + AListener.getSubject);
end;
if Succeeded(IDispatch(Message).QueryInterface(IID_ITibrvMsg, AMessage)) then begin //IDispatch Fail, 형변환 실패~
ShowMessage('message : ' + AMessage.toString);
end;
numfields := AMessage.getNumFields;
msgdata := AMessage.getSendSubject + ' -> ' +IntToStr(numfields) +' field(s) received !!' +#13+#13;
memo1.Lines.Add(AMessage.toString);
end;
|