Q&A

  • COM으로 변환한 델파이에서 특정함수에 진입을 못합니다
C++로 되어있는 COM 소스를 델파이로 변환하여 개발하려고 하는데요.  델파이로 변환했을 때, 특정함수로 아예 들어가질 않는것 같습니다.

문제의 함수 C++의 함수 원형은 다음과 같습니다.

<!--CodeS-->
STDMETHODIMP CMCTP_PluginExample::get_BrokerSymbolName(/*[in]*/ MTPA_MCSymbolInfo MCSymbolInfo, /*[out, retval]*/ BSTR* pBrokerSymbolName)
<!--CodeE-->


이것을 델파이로 변환했을때,

<!--CodeS-->
function Get_BrokerSymbolName(MCSymbolInfo: MTPA_MCSymbolInfo; out BrokerSymbolName: WideString): HResult; safecall;
<!--CodeE-->

이렇게 바꿨습니다.

그런데 문제는 디버깅을 해보면 함수 안으로 아예 들어가지도 않는것 같습니다.

정말 간단하게 다음과 같이 메세지 박스만 뿌려주는 코드만을 넣었는데도, 아무런 메세지도 뜨질 않습니다.

<!--CodeS-->
function TCxTradingPlugin.Get_BrokerSymbolName(
  MCSymbolInfo: MTPA_MCSymbolInfo; out BrokerSymbolName: WideString): HResult;
begin
  ShowMessage('Start_Get_BrokerSymbolName');

  try
    BrokerSymbolName := MCSymbolInfo.SymbolName;

    ShowMessage('Get_BrokerSymbolName');
  except
    ShowMessage('Get_BrokerSymbolName except');
  end;
end;
<!--CodeE-->

이런 경험이 있거나 해결방법을 아시는분은 답변좀 부탁드릴께요..


그리고 한가지 더.. 추가 질문 드립니다.

<!--CodeS-->
STDMETHODIMP CMCTP_PluginExample::SerializeConnectionParams(VARIANT Val, OUT SAFEARRAY** Stream)

STDMETHODIMP CMCTP_PluginExample::DeSerializeConnectionParams(IN SAFEARRAY* Stream, OUT VARIANT* pVal)
<!--CodeE-->

C++에서 위와 같은 함수 원형이 있다면 델파이에서는 어떻게 변환해야 하나요??
저는 아래와 같이 변환했는데, 아무래도 저게 틀린건 아닌가 싶기도 해서 여쭤봅니다.

<!--CodeS-->
function SerializeConnectionParams(Val: OleVariant; out Stream: PSafeArray): HResult; safecall;

function DeSerializeConnectionParams(Stream: PSafeArray; out Val: OleVariant): HResult; safecall;
<!--CodeE-->
0  COMMENTS