QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

版主

Rank: 20Rank: 20Rank: 20Rank: 20

技术值
查看: 483|回复: 4

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

[复制链接]
最佳答案
727 
累计签到:831 天
连续签到:72 天
冬雪雪冬 发表于 2017-8-4 22:05:13 4834 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

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像素,高度和宽度要比要求的大一点,否则会滚动。
  1. implementation

  2. {$R *.dfm}
  3. var
  4.   i, j, n: Integer;
  5.   ArrStr: Array of Array of String;

  6. procedure TForm1.FormCreate(Sender: TObject);

  7. begin
  8.   n:= StrToInt(InputBox('请输入', '请输入人数    ', ''));
  9.   StringGrid1.RowCount:= n + 1;
  10.   StringGrid1.Height:= (StringGrid1.DefaultRowHeight + 1) * (n + 1) + 5;
  11.   SetLength(ArrStr, n, 4);
  12.   i:= 0;
  13.   Button1.Caption:= '成绩录入  ' + IntToStr(i + 1) + '/' + IntToStr(n);
  14.   Edit1.Text:= '';
  15.   Edit2.Text:= '';
  16.   Edit3.Text:= '';
  17.   Edit4.Text:= '';
  18. end;

  19. procedure TForm1.Button1Click(Sender: TObject);
  20. var
  21.   r, c: Integer;
  22. begin
  23.   ArrStr[i, 0]:= Edit1.Text;
  24.   ArrStr[i, 1]:= Edit2.Text;
  25.   ArrStr[i, 2]:= Edit3.Text;
  26.   ArrStr[i, 3]:= Edit4.Text;
  27.   Edit1.Text:= '';
  28.   Edit2.Text:= '';
  29.   Edit3.Text:= '';
  30.   Edit4.Text:= '';
  31.   i:= i + 1;
  32.   Button1.Caption:= '成绩录入  ' + IntToStr(i + 1) + '/' + IntToStr(n);
  33.   if i >= n then
  34.   begin
  35.     Button1.Caption:= '录入完毕';
  36.     StringGrid1.cells[1, 0]:= '语文';
  37.     StringGrid1.cells[2, 0]:= '数学';
  38.     StringGrid1.cells[3, 0]:= '英语';
  39.     for r:= 1 to n do
  40.       for c:= 0 to 3 do
  41.         StringGrid1.cells[c, r]:= ArrStr[r - 1, c];
  42.     StringGrid1.Visible:= True;
  43.   end;

  44. end;
复制代码

评分

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

查看全部评分

本帖被以下淘专辑推荐:

楼层
跳转到指定楼层
最佳答案
0 
累计签到:5 天
连续签到:3 天
lwm4 发表于 2018-4-6 19:44:46 | 显示全部楼层
今天刚学了 为啥没人回帖呢
最佳答案
727 
累计签到:831 天
连续签到:72 天
冬雪雪冬  楼主| 发表于 2018-4-6 19:53:41 From FishC Mobile | 显示全部楼层
lwm4 发表于 2018-4-6 19:44
今天刚学了 为啥没人回帖呢

Delphi板块人气不旺
最佳答案
0 
累计签到:5 天
连续签到:3 天
lwm4 发表于 2018-4-6 21:54:29 | 显示全部楼层
冬雪雪冬 发表于 2018-4-6 19:53
Delphi板块人气不旺

在YouTube上看了看关于Delphi的教程很多 都是10.2的教程,国内来说还是资料教程太少了,小甲鱼老师以后还会出关于Delphi的教程吗?
最佳答案
727 
累计签到:831 天
连续签到:72 天
冬雪雪冬  楼主| 发表于 2018-4-6 21:55:58 | 显示全部楼层
lwm4 发表于 2018-4-6 21:54
在YouTube上看了看关于Delphi的教程很多 都是10.2的教程,国内来说还是资料教程太少了,小甲鱼老师以后还 ...

国内delphi的热度不高,教程也很少,估计小甲鱼近期不会有新的教程。

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-4-24 01:22

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