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

vc中数组转换的有关问题

2012-02-06 
vc中数组转换的问题?VC中的程序如下所示:其中GT_MapAxis(shortAxis_Num,double*map_count)是固高运动控制

vc中数组转换的问题?
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 '
不知道是不是我数组转换得不对,请高手指教,万分感谢!




[解决办法]
GT_MapAxis函数申明成这样:
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;

热点排行