VC中的程序如下所示:其中GT_MapAxis(short Axis_Num, double * map_count)是固高运动控制卡中的一个函数,实现多轴映射的功能(现在不去管它)。函数中“short Axis_Num”表示控制的电机轴(1表示控制一轴,2表示控制二轴),“double * map_count”表示一个double型的数组;cnt1和cnt2表示两个数组,以下程序在VC中通过
double cnt1[5]={1,0,0,0,0};
double cnt2[5]={0,1,0,0,0};
GT_MapAxis(1,cnt1);
GT_MapAxis(2,cnt2);
以下是我在Delphi6.0中转换的相应程序
procedure TForm2.Button1Click(Sender: TObject);
var
cnt1:array[1..5] of char;
cnt2:array[1..5] of char;
begin
cnt1[1]:='1';
cnt1[2]:='0';
cnt1[3]:='0';
cnt1[4]:='0';
cnt1[5]:='0';
double(cnt1); cnt2[1]:='0';
cnt2[2]:='1';
cnt2[3]:='0';
cnt2[4]:='0';
cnt2[5]:='0';
double(cnt2);
GT_MapAxis(1,cnt1);
GT_MapAxis(1,cnt2);end;调试程序时,老是报错
[Error] Unit2.pas(79): Invalid typecast
[Error] Unit2.pas(86): Invalid typecast
[Error] Unit2.pas(89): Incompatible types: 'Array' and 'PDouble'
[Error] Unit2.pas(90): Incompatible types: 'Array' and 'PDouble'
不知道是不是我数组转换得不对,请高手指教,万分感谢!
double cnt1[5]={1,0,0,0,0};
double cnt2[5]={0,1,0,0,0};
GT_MapAxis(1,cnt1);
GT_MapAxis(2,cnt2);
以下是我在Delphi6.0中转换的相应程序
procedure TForm2.Button1Click(Sender: TObject);
var
cnt1:array[1..5] of char;
cnt2:array[1..5] of char;
begin
cnt1[1]:='1';
cnt1[2]:='0';
cnt1[3]:='0';
cnt1[4]:='0';
cnt1[5]:='0';
double(cnt1); cnt2[1]:='0';
cnt2[2]:='1';
cnt2[3]:='0';
cnt2[4]:='0';
cnt2[5]:='0';
double(cnt2);
GT_MapAxis(1,cnt1);
GT_MapAxis(1,cnt2);end;调试程序时,老是报错
[Error] Unit2.pas(79): Invalid typecast
[Error] Unit2.pas(86): Invalid typecast
[Error] Unit2.pas(89): Incompatible types: 'Array' and 'PDouble'
[Error] Unit2.pas(90): Incompatible types: 'Array' and 'PDouble'
不知道是不是我数组转换得不对,请高手指教,万分感谢!
procedure GT_MapAxis(Axis_Num: SmallInt; map_count: PDouble); stdcall; external 'XXX.dll';
procedure TForm2.Button1Click(Sender: TObject);
var
cnt1:array[1..5] of Double;
cnt2:array[1..5] of Double;
begin
cnt1[1]:=1;
cnt1[2]:=0;
cnt1[3]:=0;
cnt1[4]:=0;
cnt1[5]:=0; cnt2[1]:=0;
cnt2[2]:=1;
cnt2[3]:=0;
cnt2[4]:=0;
cnt2[5]:=0; GT_MapAxis(1, @cnt1[1]);
GT_MapAxis(1, @cnt2[1]);
end;
end;
这个数组的长度是多少?5还是6?