首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

char*参数传递-集锦再问

2013-01-09 
char**参数传递----汇总再问我先说说我的思路。错误的地方帮忙指点。要实现的功能:delphi7要调用vc写的dll,d

char**参数传递----汇总再问
我先说说我的思路。错误的地方帮忙指点。

要实现的功能:delphi7要调用vc写的dll,dll中参数类型为char**。
dll中的声明:



[解决办法]
arrMedialpm[0]:='101.1.110.136'+char(0);
arrMedialpa[0]:='101.1.110.137'+char(0);
你确定调用ML_I的时候, arrMedialpm还有效吗, 即内存没有有被释放掉.或者你传入的指针是否正确?

提示是地址访问错误,  你可以在dll中的 ML_I 函数中输出 指针值看看指针是否合法.
[解决办法]
你这样使用的话,
arrGroupNo:PPCharArray;//array[0..1] of PChar;
arrMedialpm:PPCharArray;//array[0..1] of PChar;
这两个变量传入之前分配空间了吗?

你应该这样使用:
arrGroupNo:TPCharArray;
arrMedialpm:TPCharArray;
ML_I(@arrGroupNo, @arrMedialpm, ...);

我测试了一下,按照你给出的C声明写了一个DLL,用Delphi调用是正常的。

[解决办法]
引用:
函数参数声明为开放数组,Delphi编译器会隐含传入数组上界,这样C++ DLL中的函数取参数就错了。

这样就可以了:
type
  PPCharArray = ^TPCharArray;
  TPCharArray = array[0..255] of PChar;

function ML_I(arrGroupNo, arrMedialpm: PPCharArray): PCh……
+1

热点排行