CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

请masterz回答

楼主winne_ll(feiyang)2002-08-13 10:23:32 在 VC/MFC / 基础类 提问

我遇到这样的一个问题,我有一个COleSafeArray   *pArray,这是一个10行12列的指针,我想把它分割成两个COleSafeArray   TempArray1和TempArray2,其中TempArray1是10行9列,TempArray2存放其余的数据,有没有较好的方法,我现在可以把pArray的元素一个一个读出来,在分别存放在两个临时数组中,这种方法速度很慢。另外,pArray是混合类型的可能是bstr,long,double...  
  请您告诉我一个比较好的方法。 问题点数:100、回复次数:2Top

1 楼winne_ll(feiyang)回复于 2002-08-13 14:13:45 得分 0

不管谁能帮我解答,我都重分酬谢Top

2 楼masterz(www.fruitfruit.com)回复于 2002-08-13 19:27:52 得分 100

try   to   access   data   directly,   instead   of   using   GetElement/PutElement  
  COleSafeArray   olesa;  
  DWORD   numElements[]   =   {10,   12};    
  olesa.Create(VT_VARIANT,2,numElements);  
                    //   Initialize   it   with   values...  
                    long   index[2];  
                    for(index[0]=0;   index[0]<numElements[0];   index[0]++)    
    {  
                          for(index[1]=0;   index[1]<numElements[1];   index[1]++)    
  {  
        VARIANT   var;  
        VariantInit(&var);  
        switch(index[1]%3)  
        {  
        case   0:  
        var.vt=VT_BSTR;  
        var.bstrVal=CString("aaa").AllocSysString();  
        break;  
        case   1:  
        var.vt=VT_I4;  
        var.lVal=index[1];  
        break;  
        case   2:  
        var.vt=VT_R8;  
        var.dblVal=2.34;  
        break;  
   
        }  
                                olesa.PutElement(index,   &var);  
                          }  
                    }  
  //devide   into   2   safearray  
  VARIANT*   pvar;  
  olesa.AccessData((LPVOID*)&pvar);  
  COleSafeArray   olesa1;  
  {  
  DWORD   numElements1[]   =   {10,   9};    
  olesa1.Create(VT_VARIANT,2,numElements1);  
  VARIANT*   pvar1;  
  olesa1.AccessData((LPVOID*)&pvar1);  
  for(int   i=0;i<numElements1[0];i++)  
  {  
  for(int   j=0;j<numElements1[1];j++)  
  {  
  pvar1[i*numElements1[1]+j]=pvar[i*numElements[1]+j];  
  }  
  }  
  olesa1.UnaccessData();  
  }  
  COleSafeArray   olesa2;  
  {  
  DWORD   numElements2[]   =   {10,   3};    
  olesa2.Create(VT_VARIANT,2,numElements2);  
  VARIANT*   pvar2;  
  olesa2.AccessData((LPVOID*)&pvar2);  
  for(int   i=0;i<numElements2[0];i++)  
  {  
  for(int   j=0;j<numElements2[1];j++)  
  {  
  pvar2[i*numElements2[1]+j]=pvar[i*numElements[1]+j+9];  
  }  
  }  
  olesa2.UnaccessData();  
  }  
  olesa.UnaccessData();Top

相关问题

  • 请回答
  • 请回答
  • 请mcse回答:
  • 请求回答!!!!
  • masterz 请进入....
  • 请masterz解答
  • InsideDelphi(ID)请回答:
  • 难题,请回答
  • 高手请回答:
  • 徐昕请回答

关键词

  • temparray
  • numelements
  • olesa
  • parray
  • colesafearray
  • 好的方法
  • long

得分解答快速导航

  • 帖主:winne_ll
  • masterz

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo