delphi与C的参数传递的问题?
delphi写DLL(这个是我要做的工作)把C传过来的字符串进行格式化后并按照字符串的内容细分为二维的数据并且传回给C语言的主程序! 
例如 
以下为C传过来的字符串
‘11’;‘12’;‘13’;‘14’;‘15’;‘21’;‘22’;‘23’;‘24’;‘25’;‘31’;‘32’;‘33’;‘34’;‘35’;//注意此字符串的长度不固定有可能会出现‘41’~‘45’或者更多 
delphi格式化后成为一个二维数组: 
A[1,1]:=11 
A[1,2]:=12 
A[1,3]:=13 
A[1,4]:=14 
A[1,5]:=15 
A[2,1]:=21 
A[2,2]:=22 
A[2,3]:=23 
A[2,4]:=24 
A[2,5]:=25 
A[3,1]:=31 
A[3,2]:=32 
A[3,3]:=33 
A[3,4]:=34 
A[3,5]:=35 
并且把此二维数组传给c主程序。格式化好的数组如何传递给C来调用?
我想到的办法是直接传数组开始的指针给C,但如果delphi数组在内存存放不是连续的情况怎么办?能否用记录结构来进行传递?
有没有传递参数的例程啊?

解决方案 »

  1.   

    就算连续,DLL调用结束后会释放内存,这样传递数组指针会出错吧!我没有试过,可能会出问题!
      

  2.   

    如果DLL只是这功能,感觉还不如不要呢
      

  3.   

    delphi中二维的动态数组(array of array of T)的内容还真不是连续的,而且C99之前的c也不支持动态二维数组,现在也没什么很象样的c99编译器,不知道在c里面打算怎么处理,这里涉及到的细节还真不是简单说说就可以的dll的设计中对内存的要求就是谁分配谁释放,既可以设计一个参数由被调用函数计算数组的长度,然后由调用者负责分配再传进来实际写入,也可以设计成由被调用者分配,同时返回一个参数,让调用者在使用完之后再传回这个参数由被调用者释放内存