如何将二维数组z转换成TVariant? int z[10][10]; for ( int i=0; i<9; i++) { for ( int j=0; i<9; i++) { z[i][j] = (i+j)/2 ; } }现在需要传递Z给一个COM对象,如何将二维数组z转换成TVariant? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 (32) (6)为通讯控件IDC_MSComm1添加OnComm消息处理函数OnComm()(33) void CSCommTestDlg::OnComm() (34) {(35) VARIANT variant_inp;(36) COleSafeArray safearray_inp;(37) LONG len,k;(38) BYTE rxdata[2048]; //设置BYTE数组(8位无符号整数)(39) CString strtemp;(40) if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符(41) {(42) variant_inp=m_ctrlComm.GetInput();//读缓冲区(43) safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量(44) len=safearray_inp.GetOneDimSize(); //得到有效数据长度(45) for(k=0;k<len;k++)(46) safearray_inp.GetElement(&&k,rxdata+k);//转换为BYTE型数组(47) for(k=0;k<len;k++)//将数组转入存储区(48) {(49) PLCData[k]=rxdata[k];(50) }(51) verfun(PLCData,16);//计算校验码(52) if(PLCData[15]==PLCData[16])(53) { //接收数据正确发送确认信号(54) m_ctrlComm.SetOutput(COleVariant("K@"));(55) //可以在下面自行加上对数据的处理(56) if(!m_quit)//如果没有结束信号则续传数据(57) m_ctrlComm.SetOutput(COleVariant("C@"));(58) else(59) m_ctrlComm.SetOutput(COleVariant("Z@"));(60) }(61) else //接收数据出错要求重发数据(62) m_ctrlComm.SetOutput(COleVariant("R@")); 谢谢,可是我需要的是 TVariant 阿,和 Variant 还不一样呢. 推荐几本网络编程由浅入深的书籍? 如何比较两个音乐文件的不同?详细要求如下 CListCtrl是Small Icon风格,怎样用程序对第1个item发送单击消息? 谁有《用VC实现小型矢量图形系统的开发》这篇文章的源码,发给我一份 怎么让CCheckListBox左边的复选框最多只能选择一个 [求助]难道微软的屏幕和客户区间坐标转换函数有错误?? 如何得到操作系统是2003? 一个鼠标钩子的问题 Icon的编辑 怎样向另外一个进程发送Alt+F消息 用我仅剩的分数发出令我吐血的帖子,望高手可怜一下,指点迷津!拜托了 关于UDP协议的缺点.跪求高手解救~~~~~~~~~~~~
(33) void CSCommTestDlg::OnComm()
(34) {
(35) VARIANT variant_inp;
(36) COleSafeArray safearray_inp;
(37) LONG len,k;
(38) BYTE rxdata[2048]; //设置BYTE数组(8位无符号整数)
(39) CString strtemp;
(40) if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
(41) {
(42) variant_inp=m_ctrlComm.GetInput();//读缓冲区
(43) safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
(44) len=safearray_inp.GetOneDimSize(); //得到有效数据长度
(45) for(k=0;k<len;k++)
(46) safearray_inp.GetElement(&&k,rxdata+k);//转换为BYTE型数组
(47) for(k=0;k<len;k++)//将数组转入存储区
(48) {
(49) PLCData[k]=rxdata[k];
(50) }
(51) verfun(PLCData,16);//计算校验码
(52) if(PLCData[15]==PLCData[16])
(53) { //接收数据正确发送确认信号
(54) m_ctrlComm.SetOutput(COleVariant("K@"));
(55) //可以在下面自行加上对数据的处理
(56) if(!m_quit)//如果没有结束信号则续传数据
(57) m_ctrlComm.SetOutput(COleVariant("C@"));
(58) else
(59) m_ctrlComm.SetOutput(COleVariant("Z@"));
(60) }
(61) else //接收数据出错要求重发数据
(62) m_ctrlComm.SetOutput(COleVariant("R@"));