我用VC6,MFC写一个ACTIVEX控件,有一件事想请教一下各位。
内部有一个类
BOOL bb=m_TE.SendCom(LPCTSTR, LPSTR);
向串口发一个命令,返回的内容就放在LPSTR中,
我现在要把这个封装成了下方法。并且要是delphi中调用,怎么写呀。我用了很多方法,都不行。
[id(11)] boolean SendATCmd(BSTR lpCommand, VARIANT* lpRet);
[id(11)] boolean SendATCmd(BSTR lpCommand, BSTR* lpRet);
[id(11)] boolean SendATCmd(BSTR lpCommand, BSTR lpRet);
都不行的,在delphi中调用如下:var
  aa: widestring;
begin
  SetString(aa, nil, 500);
  if SmsOcx1.SendATCmd(Edit1.Text, aa) then
    mmo1.Lines.Add(aa);返回中,没有把aa中的内容修改,还是分配内存的内容。
请问这儿怎么写呀,谢谢各位??????

解决方案 »

  1.   

    [id(11)] HRESULT SendATCmd([in]BSTR lpCommand, [out]BSTR* lpRet);
      

  2.   

    我现在这个SendATCmd中加了一个AfxMessageBox,可以看到内容是对的,就是传不出来
      

  3.   

    用[id(11)] boolean SendATCmd(BSTR lpCommand, BSTR* lpRet);这个是可以的。看看你的SendATCmd是怎么写的。
      

  4.   

    m_TE.SmsSendATCom((LPSTR)lpCommand, (LPSTR)(*lpRet));
    AfxMessageBox(*lpRet);
    return TRUE;
      

  5.   

    试试
    boolean SendATCmd(BSTR lpCommand, BSTR* lpRet)
    {
    char ret[1024]={0};
    m_TE.SmsSendATCom((LPSTR)lpCommand, ret);
    _bstr_t bstret=ret;
    *lpRet=bstret.copy();
    return true;
    }