| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 379 人关注过本帖
标题:编译出错:ARRAY TYPE REQUIRED, 请问:怎么办?谢谢!
只看楼主 加入收藏
AndyYan
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2023-9-26
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
编译出错:ARRAY TYPE REQUIRED, 请问:怎么办?谢谢!
早上好!某单元在以下行出错: CCSX[i,2]:=(2*rc[i]+tc[i])*(ra[i,2]-rc[i])*sin(HCAM[i,2]*pi/180)/(2*rc[i]+tc[i,2]); 错误是ARRAY TYPE REQUIRED,请问:怎么办?谢谢! 单元如下:
 
unit Unit1;


interface


uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,dwg,excels,StdCtrls;


const Max_arch = 20;














type
array20 = array[1..Max_arch] of real;


array20X2 = array[1..Max_arch,1..2] of real;


TForm1 = class(TForm)


Button1: TButton;
Memo1: TMemo;


procedure Button1Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;






var
 Ele,Rc,Tc,DYUA : array20;
//Ele[i]是从坝底(i=1)到坝顶(i=narch)的各拱圈高程
//Rc是从坝底(i=1)到坝顶(i=narch)的各拱圈中拱的中心半径(m)Radius of Crown cantilever


//Tc是从坝底(i=1)到坝顶(i=narch)的拱冠厚度THICK
//DYUA是从坝底(i=1)到坝顶(i=narch)的上游面与坝轴线间距


 HCAM,HCA : array20X2;
//HCAM[i,1] 中拱的左岸半中心角 Half Central Angle of middle arch
//HCAM[i,2] 中拱的右岸半中心角 Half Central Angle of middle arch


//HCA[i,1] 左岸半中心角 Half Central Angle
//HCA[i,2] 右岸半中心角 Half Central Angle


 Ra,Ta,CCSX,CCSY : array20X2;
//Ra[i,1]是左岸从坝底(i=1)到坝顶(i=narch)的肩拱半径 Radius of arch Abutment
//Ra[i,2]是右岸从坝底(i=1)到坝顶(i=narch)的肩拱半径 Radius of arch Abutment


//Ta[i,1]是左岸从坝底(i=1)到坝顶(i=narch)的拱端厚度 Radius of arch Abutment
//Ta[i,2]是右岸从坝底(i=1)到坝顶(i=narch)的拱端厚度 Radius of arch Abutment


//CCSX[i,1]是左岸肩拱圆心(点M)的X坐标
//CCSY[i,1]是左岸肩拱圆心(点M)的Y坐标


//CCSX[i,2]是右岸肩拱圆心(点L)的X坐标
//CCSY[i,2]是右岸肩拱圆心(点L)的Y坐标


XUMA,YUMA,XDMA,YDMA : array20X2;
//XUMA=X coordinate of Up points of middle arch dam
//YUMA=Y coordinate of Up points of middle arch dam


//XDMA=X coordinate of Down points of middle arch dam
//YDMA=Y coordinate of Down points of middle arch dam


XUSA,YUSA,XDSA,YDSA : array20X2;
//XUSA=X coordinate of Up points of side arch dam Abutment
//YUSA=Y coordinate of Up points of side arch dam Abutment


//XDSA=X coordinate of Down points of side arch dam Abutment
//YDSA=Y coordinate of Down points of side arch dam Abutment


Form1: TForm1;


implementation
uses Comobj;


 {$R *.DFM}


procedure TForm1.Button1Click(Sender: TObject);
var
 i,Narch :integer;
 Curexcel : string;
 Fexcel :Variant; //EXCEL对象
 ouf :Textfile;
 t0,t1 :real;
begin
 try
 begin
 Fexcel:= CreateOleObject('Excel.Application');
 Fexcel.DisplayAlerts := False; Fexcel.workbooks.Open(extractfilepath(Application.exeName)+'拱坝.xls');


 Fexcel.WorkSheets[1].Activate; // 设置第1个工作表为活动工作表
 Fexcel.Visible := False; Narch:= StrToInt(Fexcel.Cells[3,7].Value);


 for i:=1 to narch do
 begin
 Ele[i]:=StrToFloat(Fexcel.Cells[7+narch-i,1].Value);
 Rc[i]:=StrToFloat(Fexcel.Cells[7+narch-i,2].Value);
 Tc[i]:=StrToFloat(Fexcel.Cells[7+narch-i,3].Value);
 DYUA[i]:=StrToFloat(Fexcel.Cells[7+narch-i,4].Value);
 HCAM[i,1]:=StrToFloat(Fexcel.Cells[7+narch-i,5].Value); //左岸中拱角度
 HCAM[i,2]:=StrToFloat(Fexcel.Cells[7+narch-i,6].Value); //右岸中拱角度
 Ta[i,1]:=StrToFloat(Fexcel.Cells[7+narch-i,7].Value);
 Ta[i,2]:=StrToFloat(Fexcel.Cells[7+narch-i,8].Value);
 Ra[i,1]:=StrToFloat(Fexcel.Cells[7+narch-i,9].Value);
 Ra[i,2]:=StrToFloat(Fexcel.Cells[7+narch-i,10].Value);
 HCA[i,1]:=StrToFloat(Fexcel.Cells[7+narch-i,11].Value); //左岸半中心角
 HCA[i,2]:=StrToFloat(Fexcel.Cells[7+narch-i,12].Value); //右岸半中心角


 CCSX[i,2]:=(2*rc[i]+tc[i])*(ra[i,2]-rc[i])*sin(HCAM[i,2]*pi/180)/(2*rc[i]+tc[i,2]);
 //点L的X坐标


 CCSY[i,2]:=DYUA[i]-rc[i]-tc[i]/2-(2*rc[i]+tc[i])*(ra[i,2]+rc[i])*cos(HCAM[i,2]*pi/180)/(2*rc[i]+tc[i,2]);
//点L的Y坐标


 CCSX[i,1]:=-(2*rc[i]+tc[i])*(ra[i,1]-rc[i])*sin(HCAM[i,1]*pi/180)/(2*rc[i]+tc[i,1]);
 //点M的X坐标


 CCSY[i,1]:=DYUA[i]-rc[i]-tc[i]/2-(2*rc[i]+tc[i])*(ra[i,1]+rc[i])*cos(HCAM[i,1]*pi/180)/(2*rc[i]+tc[i,1]);
 //点M的Y坐标


 end;


 Fexcel.WorkBooks.Close; //23) 关闭工作簿
 Fexcel.Quit; //24) 退出 Excel:


 end;
 except
 Application.MessageBox('导入数据出错!请检查文件的格式是否正确!', '提示信息', MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL);
 Fexcel.Quit;


 Exit;
 end;


 AssignFile(ouf,'d.txt');
 {$I-} reset(ouf);
 {$I+} rewrite(ouf);


 for i:=1 to narch do
 begin
 writeln(ouf,CCSX[i,2]);
 writeln(ouf,CCSY[i,2]);


 writeln(ouf,CCSX[i,1]);
 writeln(ouf,CCSY[i,1]);


 end;


 closeFile(ouf);


 end;
 end.
搜索更多相关主题的帖子: 坐标 Tc Value 中心 end 
2023-09-26 06:29
AndyYan
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2023-9-26
收藏
得分:0 
赋值语句“CCSX[i,2]:=(2*rc[i]+tc[i])*(ra[i,2])*sin(HCAM[i,2]*pi/180)/(2*rc[i]+tc[i,2]);”的等号右边是已知项(基类型为实数的数组元素):rc[i]、tc[i]、ra[i]、HCAM[i,2],已知rc[i]、tc[i]、ra[i]、HCAM[i,2]求得圆心的X坐标(公式中的pi是圆周率),基类型为实数的数组元素经过加减乘除等初等运算的结果是什么?字符串?不对。整数?不对。实数?对,把实数赋值给基类型为实数的二维数组CCSX中元素CCSX[i,2]会类型不匹配?赋值语句等号左边就是数组类型,怎么还会错(ARRAY_TYPE_REQUIRED)?
2023-09-26 16:14
yiyanxiyin
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:9
帖 子:173
专家分:1223
注 册:2023-6-29
收藏
得分:20 
tc[i,2], 这里用法错误, tc是一维数组
2023-09-26 18:14
AndyYan
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2023-9-26
收藏
得分:0 
楼上版主水平高!公式录入时,我错把ta[i,2]打成tc[i,2],谢谢!
2023-09-26 21:32
快速回复:编译出错:ARRAY TYPE REQUIRED, 请问:怎么办?谢谢!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020363 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved