2012-10-16 50 views
0

我有一段如下所示的代码,用C++ Builder-6很好地运行。如何在C++ Builder中使用Procedure.Exec XE

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

我尝试了几种方法来重新调用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)))); 
} 

回答

0

我发现解决方案。 程序exec只需要Variant而不是普通字符串

Variant vNomeNodo, vIpAddress, vTipoPmv, vCmdType; 

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


VarServerPmvManager.Exec(RiconfiguraNodo << vNomeNodo << vIpAddress << vTipoPmv << vCmdType);