|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
动态数组。
动态数组的定义:
数组名: Array of 基类型;
如:ArrStr: Array of String;
使用时需先确定数组的长度,SetLength(ArrStr, n);
数组的下标从0开始。
二维动态数组:
ArrStr: Array of Array of String;
SetLength(ArrStr, n1, n2);
那么拌静态版动态数组可以吗?我做了如下尝试:
这样是可以的,也就是先固定第二级,再动态第一级。
var
ArrStr1: Array of Array[5..6] of String;
begin
SetLength(ArrStr1, 2);
ArrStr1[1, 6]:= 'AAA';
end;
反过来则在SetLength处报错。
var
ArrStr1: Array[5..6] of Array of String;
begin
SetLength(ArrStr1, 2);
ArrStr1[6, 1]:= 'AAA';
end;
如果这样写,可以通过,且可以使每行的列数不一样。
var
ArrStr1: Array[5..6] of Array of String;
begin
SetLength(ArrStr1[5], 2);
ArrStr1[5, 1]:= 'AAA';
SetLength(ArrStr1[6], 4);
ArrStr1[6, 3]:= 'BBB';
end;
可以用Low、High和Length返回数组下标的最大最小值和长度。
例题:输入人数,录入姓名、语数英成绩,完成后做表。要求先弹出窗口输入人数,完成输入成绩前不出现表格。
InputBox函数,有三个参数:标题,提示信息和缺省值,如果不要缺省值将其设为’’。
注意中文的提示信息可以显示不全,可以在最后加一些空格
在FormCreate中设置InputBox,则在主窗口出现前,先出现InputBox窗口,点击OK后InputBox窗口消失,主窗口显示。
StringGrid先设置为隐藏,待输入完毕后在显示。
根据人数设置数组,设置StringGrid的行数和高度,注意高度要比行数X行高加一(因为网格线还占用1像素,高度和宽度要比要求的大一点,否则会滚动。
- implementation
- {$R *.dfm}
- var
- i, j, n: Integer;
- ArrStr: Array of Array of String;
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- n:= StrToInt(InputBox('请输入', '请输入人数 ', ''));
- StringGrid1.RowCount:= n + 1;
- StringGrid1.Height:= (StringGrid1.DefaultRowHeight + 1) * (n + 1) + 5;
- SetLength(ArrStr, n, 4);
- i:= 0;
- Button1.Caption:= '成绩录入 ' + IntToStr(i + 1) + '/' + IntToStr(n);
- Edit1.Text:= '';
- Edit2.Text:= '';
- Edit3.Text:= '';
- Edit4.Text:= '';
- end;
- procedure TForm1.Button1Click(Sender: TObject);
- var
- r, c: Integer;
- begin
- ArrStr[i, 0]:= Edit1.Text;
- ArrStr[i, 1]:= Edit2.Text;
- ArrStr[i, 2]:= Edit3.Text;
- ArrStr[i, 3]:= Edit4.Text;
- Edit1.Text:= '';
- Edit2.Text:= '';
- Edit3.Text:= '';
- Edit4.Text:= '';
- i:= i + 1;
- Button1.Caption:= '成绩录入 ' + IntToStr(i + 1) + '/' + IntToStr(n);
- if i >= n then
- begin
- Button1.Caption:= '录入完毕';
- StringGrid1.cells[1, 0]:= '语文';
- StringGrid1.cells[2, 0]:= '数学';
- StringGrid1.cells[3, 0]:= '英语';
- for r:= 1 to n do
- for c:= 0 to 3 do
- StringGrid1.cells[c, r]:= ArrStr[r - 1, c];
- StringGrid1.Visible:= True;
- end;
- end;
复制代码
|
评分
-
查看全部评分
|