XE3随笔9:使用不同的数据类型标记数组

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//使用 Byte、Word、Boolean 标记数组
procedure TForm1.Button1Click(Sender: TObject);
var
  arr1: array[Byte] of Integer;
  arr2: array[Word] of Integer;
  arr3: array[Boolean] of Integer;
begin
  ShowMessage(IntToStr(Length(arr1))); {256}
  arr1[Low(arr1)]  := 11;
  arr1[High(arr1)] := 22;
  ShowMessageFmt(‘%d, %d‘, [arr1[0], arr1[255]]); {11, 22}

  ShowMessage(IntToStr(Length(arr2))); {65536}
  arr2[0]  := 33;
  arr2[65535] := 44;
  ShowMessageFmt(‘%d, %d‘, [arr2[Low(arr2)], arr2[High(arr2)]]); {33, 44}

  ShowMessage(IntToStr(Length(arr3))); {2}
  arr3[False] := 55;
  arr3[True]  := 66;
  ShowMessageFmt(‘%d, %d‘, [arr3[Low(arr3)], arr3[High(arr3)]]); {55, 66}
end;

//使用 "子界" 标记数组
procedure TForm1.Button2Click(Sender: TObject);
type
  TC = ‘a‘..‘z‘;
var
  arr: array[TC] of Integer;
  n1,n2,n3: Integer;
begin
  ShowMessage(IntToStr(Length(arr))); {26}
  arr[‘a‘] := 11;
  arr[‘b‘] := 22;
  arr[‘z‘] := 33;

  n1 := arr[Chr(97)];
  n2 := arr[‘abc‘[2]];
  n3 := arr[‘z‘];

  ShowMessageFmt(‘%d,%d,%d‘, [n1,n2,n3]); {11,22,33}
end;

//使用 "枚举" 标记数组
procedure TForm1.Button3Click(Sender: TObject);
type
  TMyEnum = (A, B, C, D);
var
  arr: array[TMyEnum] of Integer;
  i: Integer;
begin
  arr[A] := 11;
  arr[B] := 22;
  arr[C] := 33;
  arr[D] := 44;

  for i in arr do ShowMessage(IntToStr(i)); { 11/22/33/44 }
end;

//还是使用 "枚举" 标记数组
procedure TForm1.Button4Click(Sender: TObject);
type
  TMyEnum = (X=1, Y=3, Z=5);
var
  arr: array[TMyEnum] of Integer;
  i,n1,n2,n3: Integer;
begin
  arr[X] := 11;
  arr[Y] := 22;
  arr[Z] := 33;

  i := 1; n1 := arr[TMyEnum(i)];
  i := 3; n2 := arr[TMyEnum(i)];
  i := 5; n3 := arr[TMyEnum(i)];

  ShowMessageFmt(‘%d,%d,%d‘, [n1,n2,n3]); {11,22,33}
end;

end.
时间: 2024-08-09 04:53:36

XE3随笔9:使用不同的数据类型标记数组的相关文章

c#中的数据类型简介(数组)

c#中的数据类型简介(数组) 数组定义 可以将数组看成相同数据类型的一组或多组数据,包括一维数组,多维数组和交错数组 数据申明 一维数组的几种申明和实例化 type[]  typeName = new type[n]:                                                //定义数组但是未赋值 type[0] = item1; type[1] = item2; type[2] = item3; ...... type[n-1] =itemn; type[

JNI官方文档翻译3-基本数据类型 字符串 数组

在使用JNI的时候,你问的最多的问题莫过于 Java的数据类型和C/C++的数据类型怎么一对一映射.在我们的HelloWord例子当中,我们并没有传入任何参数给我们的java层print方法,native方法也并没有返回任何数据而是void,本地方法只是简单的打印一个字符串,然后就返回了.实际开发中我们都需要传入参数,返回参数,本章就会讨论如何从java层向底层传数据,以及如何从底层向java层返回数据.我们从基本数据类型 字符串 数组开始, 下一章再介绍如何传任意类型的数据,以及如何访问他们的

java基础-引用数据类型之数组(Array)

java基础-引用数据类型之数组(Array) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 原文地址:https://www.cnblogs.com/yinzhengjie/p/8719728.html

Java 初次再体验 带着疑问思考【1】基本数据类型和数组及我为啥子要学Java 及运算等等 就是那个啥Java和别的语言都要干的事 基本计算0-0

为什么学Java 1.安排2.生活 基本数据类型和数组1.标识符 取名字 取名字要有规则 所以就叫命名规则 言而总之 取合适的名字 1.一个标准的英文名 2.包小写 3.类首字母大写 4.常量全部大写 5.变量首字母小写,其后如果还有单词首字母大写 2.unicode字符集 65536个字符 前128个ASCII码对应 Java语言使用的就是Unicode标准字符集 所以这个和char的个数一样?-? 3.基本数据类型 四大类 八种 逻辑类型:boolean 整数类型: byte .short.

XE3随笔5:Format与转义字符

unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls; type   TForm1 = class(TForm)     Button1: TButton;     Button2: TButton;     procedure Button1Click(Sender: TObject);     pro

XE3随笔20:几个和当前路径相关的新函数

偶然从 SysUtils 里发现了几个路径相关的函数, 以前没见过, 可能是 Delphi XE3 新增的: GetLocaleDirectory(); GetLocaleFile(); LocaleDirectoryExists(); LocaleFileExists(); 应用测试: uses IOUtils; procedure TForm1.FormCreate(Sender: TObject); var   p,f: string;   b: Boolean; begin   {设置与

XE3随笔6:SuperObject 的 JSON 对象中还可以包含 "方法"

SuperObject 的 JSON 对象中还可以包含 "方法", 这太有意思了; 其方法的格式是: procedure Method(const This, Params: ISuperObject; var Result: ISuperObject); //另外, 这是其数据类型的枚举: TSuperType = (stNull, stBoolean, stDouble, stInt, stObject, stArray, stString, stMethod); 测试代码: un

XE3随笔2:SuperObject构建JSON

SuperObject 构建一个 JSON 的常用方法: 从字符串.从文件.从流. unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls; type   TForm1 = class(TForm)     Button1: TButton;     Button2: TButton;     Button

XE3随笔15:使用 IXMLHTTPRequest 简单获取网页源代码

unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, StdCtrls; type   TForm1 = class(TForm)     Memo1: TMemo;     Button1: TButton;     procedure Button1Click(Sender: TObject);   end; var