数组的定义

静态数组的定义方法

//1. 标准方法:
var
  MyArr: array[0..10] of Integer;  //定义静态数组

//2. 可以使用非0下标:
var
  MyArr: array[9..10] of Integer;  //不能提倡,这样不容易与系统函数沟通

//3. 根据预定义类型来声明数组:
type
  TMyArr = array[0..10] of Integer;  //先定义一个数组类型
var
  MyArr: TMyArr;  //再定义静态数组
//4. 在非过程区可以直接赋值:
var
  MyArr: array[0..2] of Integer = (11,22,33
);
//5. 多维数组:
var
  MyArr: array[0..2, 0..2] of Integer;
begin
  //使用
  MyArr[1,2] := 100;
end;
//6. 根据子界定义数组:
type
  TRange = 0..10;
var
  MyArr: array[TRange] of Integer;
//7. 根据枚举定义数组:
type
  TEnums = (Enum1,Enum2,Enum3);
var
  MyArr: array[TEnums] of string;
begin
  MyArr[Enum1] := '万一';
  ShowMessage(MyArr[Enum1]);  //万一
end;

//8. 根据其他类型定义数组:
var
  MyArr: array[Byte] of Char;
begin
  MyArr[255] := #65;
  ShowMessage(MyArr[255]);  //A
end;

//同时定义类型:
type   MyRec = record
    s: string;
    r: Real;
    b: Byte;
  end;
var
  Arr1: array[0..100] of MyRec;
  Arr2: array[0..100] of record s: string; r: Real; b: Byte; end//可以直接这样定义
  Arr3: packed array[0..100] of MyRec;  //压缩数组定义, 好像没有区别?

 

//数组的“意外”定义

//没想到可以这样:
const
arr:
array[Boolean] of Char = ('A','B');
begin
ShowMessage(arr);
{AB}
ShowMessage(IntToStr(Length(arr)));
{2}

{访问元素}
ShowMessage(arr[False]);
{A}
ShowMessage(arr[True]);
{B}

{也可以这样访问}
ShowMessage(arr[Low(arr)]);
{A}
ShowMessage(arr[High(arr)]);
{B}

{但不能这样访问}
// ShowMessage(arr[0]);
// ShowMessage(arr[1]);

{但可以变通一下}
ShowMessage(arr[Boolean(
0)]); {A}
ShowMessage(arr[Boolean(
1)]); {B}
end;

//意外定义在程序中的应用

const
BoolStr:
array[Boolean] of string = ('False', 'True');
var
b: Boolean;
begin
b :
= True;
ShowMessage(BoolStr[b]);
{True}
b :
= not b;
ShowMessage(BoolStr[b]);
{False}
end;

posted @ 2011-08-25 09:00  宋扬  阅读(215)  评论(0编辑  收藏  举报