鱼C论坛

 找回密码
 立即注册
查看: 5069|回复: 8

[学习笔记] 关于数组的认识03 - 零基础入门学习Delphi 017

[复制链接]
发表于 2017-8-4 22:05:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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函数,有三个参数:标题,提示信息和缺省值,如果不要缺省值将其设为’’。
注意中文的提示信息可以显示不全,可以在最后加一些空格
3.JPG
4.JPG
5.JPG
在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;

评分

参与人数 1鱼币 +5 收起 理由
小甲鱼 + 5 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-6 19:44:46 | 显示全部楼层
今天刚学了 为啥没人回帖呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-6 19:53:41 From FishC Mobile | 显示全部楼层
lwm4 发表于 2018-4-6 19:44
今天刚学了 为啥没人回帖呢

Delphi板块人气不旺
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-8 09:36:16 | 显示全部楼层
顶起来,后续的学习呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-9 21:55:53 | 显示全部楼层
感觉Delphi挺好的,为什么会不火了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-4 01:58:14 | 显示全部楼层
StringGrid1.Height:= (StringGrid1.DefaultRowHeight + 1) * (n + 1) + 5
这里最后为什么要 + 5 呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-30 21:26:02 | 显示全部楼层
panel把label挡住了,怎么办
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-17 14:36:32 | 显示全部楼层
36914541 发表于 2019-4-4 01:58
**** 作者被禁止或删除 内容自动屏蔽 ****

我也想问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-24 15:24:55 | 显示全部楼层

不然会滚动 你可以加任意
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 00:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表