com接口中要向客户端传一个二维数组,遇到问题?高分!!!!!!!! double arr[10][240];申请的空间当GetData退出的时候就释放了,p是得不到它的值的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我想2维数组用SaveArray实现比较好,size_is好象只接受一个参数 在msdn里查找safe array,有详细说明。 你可以直接在函数中给*p分配内存,比如: *p = (double *)malloc(..); wistaria说得对,即使分配了空间,服务进程中分配的空间,客户进程怎么能用一个指针就能访问?不可能!我看最简单的办法就是用SafeArray! HRESULT hResult; SAFEARRAY *psa;SAFEARRAYBOUND ArrBound[1];ArrBound[0].lLbound = 0;ArrBound[0].cElements = 10;psa = SafeArrayCreate(VT_I2 , 1 , ArrBound);if(psa == NULL){ hResult = ResultFromScode(E_OUTOFMEMORY); AfxMessageBox("Error in Allocate SafeArray"); return hResult;} long Redirection[1] = {0};short input=0;int k;for ( k=0 ; k<10 ; k++){ var.iVal = k; input = k; Redirection[0] = k; hResult = SafeArrayPutElement(psa , Redirection ,(void* ) &k); if (FAILED(hResult)) { AfxMessageBox("Error in assign element"); hResult = SafeArrayDestroy(psa); return hResult; }各位大虾,以上是我用safe array做的一维数组的添加元素(element),每次SafeArrayPutElement返回的时候,都是正确的不报错,可是用一下的代码取不到数据,我是完全按照msdn上的例程写代码的.VARIANT var;var.iVal = 0;short temp = 0;for (k=0 ; k<10 ; k++){ Redirection[0] = k; hResult = SafeArrayGetElement(psa , Redirection , &var); if(FAILED(hResult)) { AfxMessageBox("Error in Getting Elements in the array"); hResult = VariantClear(&var); hResult = SafeArrayDestroy(psa); return hResult ; } temp = var.iVal;} 还有一个问题,各位说用safe array是指在接口的定义中使用safe array作为传输的数据的类型还是在程序中用safe array分配地址空间,然后用copy 到 double** 中去,这样做可行吗? 网页上的ActiveX控件随着IE浏览器一起移动,但控件却没有收到WM_MOVE消息??why??谢谢! 求在圖像中如何定位的代碼 请高手帮忙看看,谢谢 请问一下,这条SQLSERVER语句哪里错掉 请问net use 命令对应的api函数是什么? 下周要考试,散分了!要的快来顶! 百分征集:如何在一张有车辆的图片中将车牌号提取出来! 如何查到一个frame中的所有view的句柄?急,在线等待! 我的心拔凉拔凉的,这个Tab order的问题难道很难吗?没人帮我? 谢谢大家帮忙~如何将一个INT数姐存入到SQL数据库中 如何调用IE的系统功能? 用ODBC访问数据库的小问题
*p = (double *)malloc(..);
SAFEARRAY *psa;
SAFEARRAYBOUND ArrBound[1];
ArrBound[0].lLbound = 0;
ArrBound[0].cElements = 10;
psa = SafeArrayCreate(VT_I2 , 1 , ArrBound);
if(psa == NULL){
hResult = ResultFromScode(E_OUTOFMEMORY);
AfxMessageBox("Error in Allocate SafeArray");
return hResult;
}
long Redirection[1] = {0};
short input=0;
int k;
for ( k=0 ; k<10 ; k++)
{
var.iVal = k;
input = k;
Redirection[0] = k;
hResult = SafeArrayPutElement(psa , Redirection ,(void* ) &k);
if (FAILED(hResult))
{
AfxMessageBox("Error in assign element");
hResult = SafeArrayDestroy(psa);
return hResult;
}各位大虾,以上是我用safe array做的一维数组的添加元素(element),
每次SafeArrayPutElement返回的时候,都是正确的不报错,可是用一下的代码取不到数据,
我是完全按照msdn上的例程写代码的.VARIANT var;
var.iVal = 0;
short temp = 0;
for (k=0 ; k<10 ; k++)
{
Redirection[0] = k;
hResult = SafeArrayGetElement(psa , Redirection , &var);
if(FAILED(hResult))
{
AfxMessageBox("Error in Getting Elements in the array");
hResult = VariantClear(&var);
hResult = SafeArrayDestroy(psa);
return hResult ;
}
temp = var.iVal;
}
还是在程序中用safe array分配地址空间,然后用copy 到 double** 中去,这样做可行吗?