0

我有一段代码如下所示,在 C++Builder-6 上运行良好。

现在我已将程序移至 C++Builder-XE 并调用“RiconfiguraNodo << nomeNodo ....”给我下面的模糊错误报告。

我尝试了几种方法来重写对 ole 过程“RiconfiguraNodo”的调用,但我没有找到可行的解决方案。

如何以适合 C++BuilderXE 的方式重写这段代码

报错:

  [BCC32 Error] UnitMain.cpp(262): E2015 Ambiguity between 'operator
 System::AutoCmd::<<(const System::Currency) at c:\program files
 (x86)\embarcadero\rad studio\8.0\include\windows\rtl\sysvari.h:3561'
 and 'operator System::AutoCmd::<<(const System::TDateTime) 
 at  c:\program files (x86)\embarcadero\rad
 studio\8.0\include\windows\rtl\sysvari.h:3562'   

 Full parser context
     UnitMain.cpp(245): parsing: void _fastcall TFormMain::RiconfiguraNodo(System::UnicodeString,System::UnicodeString,System::UnicodeString,System::UnicodeString)

示例代码:

Procedure RiconfiguraNodo( L"RiconfiguraNodo" );

if (VarServerPmvManager.IsEmpty() || VarServerPmvManager.IsNull())
{
    VarServerPmvManager = VarServerPmvManager.CreateObject(ProgId_ServerPmvmanager);
}

try
{
    VarServerPmvManager.Exec( RiconfiguraNodo << nomeNodo << ipAddress << tipoPmv << cmdType );
}
catch (Exception & ex)
{
    Mylog(Fun + Sysutils::Format("ERROR=[%s] ", ARRAYOFCONST((ex.Message))));
}
4

1 回答 1

0

我找到了解决方案。过程 exec 只需要 Variant 而不是纯字符串

 Variant vNomeNodo, vIpAddress, vTipoPmv, vCmdType;

            vNomeNodo   = nomeNodo;
            vIpAddress  = ipAddress;
            vTipoPmv    = tipoPmv;
            vCmdType    = cmdType;


VarServerPmvManager.Exec( RiconfiguraNodo << vNomeNodo << vIpAddress << vTipoPmv << vCmdType );         
于 2012-10-16T15:10:52.930 回答