1、VARIANT转COleSafeArray、 COleSafeArray转BYTE型数组
在串口通信的OnCommMscomm()事件中会涉及到这两种类型转换,比如:
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len;
BYTE rxdata[2048];
if(m_cmsSerial.get_CommEvent()==2) //事件值为表示串口接受缓冲区内有字符
{
variant_inp=m_cmsSerial.get_Input(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换成
//COleSafeArray型变量
len=safearray_inp.GerOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+x); // safearray_inp转换成
//BYTE型数组
…………..
……………
}
关于VARIANT、ColeSafeArray类型的具体介绍参考转载博客
http://blog.csdn.net/daofengdeba/article/details/15026855
2、数组转容器、容器转数组
1>以整形为例:
数组转容器:
vector<int>recvBuf;
int buf[255];
for(int i=0;i<254;++i)
{
recvBuf.push_back(buf[i]);
}
2>容器转数组:
vector<int>recBuf;
int buf[255];
for(vector<int>::size_type ix=0; ix!=recBuf.size(); ++ix)
{
buf[ix]=recBuf[ix];
}
3、多种类型转换成CString类型、CString转其他类型
1>转换成CString型:
function Format(const Format: string; const Args: array of const): string; overload;
Format函数的第一个参数是格式化字符串,用%d表示int,%s表示char*,%u表示unsigned int,