c++与delph混合编程中怎样来回传递Double型数组???急!!!(50分)

T

tansin

Unregistered / Unconfirmed
GUEST, unregistred user!
[?]
delphi 用来做界面无疑是很好的;C++语言表达的灵活型使编写算法灵活、
简洁。完美的做法是将两者结合。可是来回传递数据使我很费脑筋,尤其
是数组,两者表达大不一样,但这一关又绕不过,
不知哪位大虾有此本领?愿赐教。
 
我实验了一下发现如果delphi中的array of Integer 型的参数对应相应c++中的int*可以
实现整形数组的传递,但换成了double型就不行了,
这是什么道理?
 
最好用指针,再传递一个数组个数。
 
看看话题113884
 
[:(]
redfoks的做法
Type
TBigDoubleArr = array[0..MaxInt div 8] ofdo
uble;
var
a: array[0..4, 0..5];
调用
pro(TBigDoubleArr(a));
似乎编译通不过,不是说TBigDoubleArr不是一个类型,就是说无效的类型转换;
再者他的目的是将二维数组改为一维数组,我的本就是一维数组无须转换;
我的处理方法是
type
Ta1 = array[0..5] of Integer;
function GetToutle(var I1:Ta1;I2: Integer): Integer;stdcall;
external 'a.dll';
var
I1: Integer;
v:Integer;
I: Ta1;
begin
...
v := GetToutle(I,I1);
返回的结果正确;c++ dll中的的函数原形为:
extern "C" int _stdcall GetToutle(int *p,int I)
{
int tmp = 0;
for (int i= 0;
i < I;
++i)tmp += p;
return tmp;
}
另一种做法:
type
Ta1 = array of Integer;//
function GetToutle(I1:Ta1;I2: Integer): Integer;stdcall;//去掉var
也正确;
但是只要把上面的整型改成double,返回的结果就不正确;
有谁能道清其中原委?
万急!
 
那你就用C++ BUILDER
他的组件大部分是用DELPHI的但语法又是C的,满足你的需要!
 
顶部