鱼C论坛

 找回密码
 立即注册
查看: 2952|回复: 1

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

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

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

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

x
感觉delphi的数组比python的list差多了,只能是相同类型的元素,大概静态语言都只能这样吧。数组分为静态数组和动态数组。数组有一维、二维和多维数组。
静态数组定义:
1)        先定义类型再定义数组:
Type
  数组名 = Array[下标类型] of 基类型;
例如:
Type
  Number = Array[1..10] of Integer;
下标类型有整型、字符型、布尔型、子界型和枚举型。
基类型可以是任何类型。
下标类型和基类型为高级类型时需事先声明。
Var
  Num_one : Number;
2)        直接定义数组:
Var
  Num_one : Array[1..10] of Integer;
引用元素,Num_one[1]
Delphi的数组下标多以1开始,为了与C和python相同,我一般以0起始。但delphi的起始值很混乱,如copy是从1开始计算的。
Edit的文本居中的代码是:
SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_CENTER);
  Edit1.invalidate;
  但这次小甲鱼采用的是
SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_CENTER);
Edit1.refresh;
我感觉refresh更好理解些。

例题:随机产生10个2位整数,放入一维数组,找出最大值和最大值的下标。
1.jpg
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   i, max, max_i: Integer;
  4.   num: Array[0..9] of Integer;
  5. begin
  6.   randomize;   //初始化随机数种子
  7.   edit1.Text:= '';
  8.   edit2.Text:= '';
  9.   edit3.Text:= '';
  10.   for i:=0 to 9 do
  11.     begin
  12.       num[i]:= 10 + random(90);
  13.       edit1.Text:= edit1.Text + IntToStr(num[i]) + ','; //本行和下面+2行将数组的值用逗号隔开,这比python的join麻烦多了。
  14.     end;
  15.   edit1.Text:= copy(edit1.Text, 1, length(edit1.Text) - 1);
  16.   max:= num[0];
  17.   max_i:= 0;
  18.   for i:= 1 to 9 do
  19.     if max < num[i] then
  20.       begin
  21.         max:= num[i];
  22.         max_i:= i;
  23.       end;
  24.   edit2.text:= IntToStr(max);
  25.   edit3.text:= IntToStr(max_i + 1);
  26. end;

  27. procedure TForm1.FormCreate(Sender: TObject);
  28. begin
  29.   SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_CENTER);
  30.   //Edit1.invalidate;
  31.   Edit1.refresh;
  32.   SetWindowLong(Edit2.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_CENTER);
  33.   Edit2.refresh;
  34.   SetWindowLong(Edit3.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_CENTER);
  35.   Edit3.refresh;

  36. end;
复制代码

评分

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

查看全部评分

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 2018-6-19 13:38:05 | 显示全部楼层
该程序可能会遇到以下问题:
      产生的随机数会重复(A,B,C,C,D...)),而,Edit3只显示第一个重复的数字下标(3)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 08:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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