本人是想将一个整型Dat[25][2048]数组通过safearray传给variant数组,再传给com组件以实现某些操作,可是

现在不知道在什么地方出了问题,程序可以编译通过,只是运算的结果不对。怀疑问题出在数据传递的整个过程

中,请高手指点。



下附程序




void __fastcall TMainForm::Wiggle(Dat)
{
 
        SAFEARRAY *pArray=NULL;
        SafeArrayAllocDescriptor(2,&pArray);
        pArray->rgsabound [0].lLbound =0;
        pArray->rgsabound [0].cElements =25;
        pArray->rgsabound [1].lLbound =0;
        pArray->rgsabound [1].cElements =2048;
        pArray->cbElements =sizeof(int);       
        
        pArray->pvData =Dat;  //二维数组Dat[25][2048]这样赋组pArray->pvData
                              // 不知道对不对!
        

        TVariant a;
        a.SetSAFEARRAY(&pArray);     //相把SAFEARRAY创建的二维数组   
        a.vt= VT_INT|VT_ARRAY|VT_BYREF;

        wigb2->WiggleB(a);//此为com组件的调用!

        //---------test----------以下程序想测试数据传递是否正确
        int **tmp;
        tmp=new int *[25];
        for (int i=0;i<25;i++)
        {
        tmp[i]=new int[2048];
        memset(tmp[i],0,sizeof(int)*2048);
        memcpy(tmp[i],a.parray->pvData ,sizeof(int)*2048);
        }
        FILE *fp;
        fp=fopen("test.txt","w+");
        for (int i=0;i<25;i++)
        {
        for (int j=0;j<2048;j++)
        fprintf(fp,"%f\t",(float)tmp[i][j]);
        fprintf(fp,"\n");
        }
        fclose(fp);
        //---------------------
 }