Delphi 系统[23]关键字和保留字 array、file、set、string、in、nil


Delphi 系统[23]关键字和保留字  array、file、set、string、in、nil

1、定义:

  • array :声明一个数组。
  • file :声明一个文件类型。
  • set :声明一个集合。
  • string :声明一个字符串。
  • in:用于判断一个集合中是否包含某个元素。也可以被用在 for 语句中,用于循环取出一个集合中的元素。也用于工程文件中,用于标识某个文件是否被工程所引用。
  • nil:指示一个指针(某些对象其实也是指针)为空。

2、示例:

{ 定义各种数据类型 }
type
  TMyArray = array[0..9] of string; { 声明静态数组 }
  TCharArray = array of Char; { 声明动态数组 }
  TButtonFile = file of TButton;  { 声明 TButton 格式的文件类型 }
  TIntFile = file of Integer; { 声明 Integer 格式的文件类型 }
  TLatterSet = set of 'A'..'Z';  { 声明大写字母集合 }
  TByteSet = set of byte;  { 声明字节集合 }
  TName = string[32];  { 声明 32 个自己长度的 ShortString 类型 }

procedure TForm1.Button1Click(Sender: TObject);
var
  { 声明各种数据类型的变量 }
  MyArray1: TMyArray;
  MyArray2: array of Char;
  MyFile1: TButtonFile;
  MyFile2: file of Integer;
  MySet1: TLatterSet;
  MySet2: set of 'A'..'Z';
  Name1: TName;
  Name2: string[255];
  Name3: string;

  I: Integer;
begin
  { 数组类型测试 }
  SetLength(MyArray2, 26);
  for I := Low(MyArray2) to High(MyArray2) do
    MyArray2[I] := Chr(65 + I);
  ShowMessage(string(MyArray2));

  { 集合类型测试 }
  MySet1 := ['A'..'Z'];
  MySet2 := MySet1;
  if 'A' in MySet1 then ShowMessage('Found A in MySet1');    //in用于集合
  if CharInSet('A', MySet2) then ShowMessage('Found A in MySet2');
end;

in的其他用法:

procedure TForm1.Button1Click(Sender: TObject);
var
  Item: Char;
  MySet: set of 'A'..'Z';
begin
  { in 用于 for 语句 }
  for Item in MySet do
    Caption := Caption + Item;
end;


{ in 用于工程文件 }
program Project1;
uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};
begin
end.

nil:

{ 检测控件是否存在 }
procedure TForm1.Button1Click(Sender: TObject);
var
  MyEdit: TEdit;
begin
  { 仅仅释放 }
  MyEdit := TEdit.Create(Self);
  try
    MyEdit.Parent := Self;
    MyEdit.Show;
    Caption := BoolToStr(Assigned(MyEdit), True);
  finally
    MyEdit.Free;
  end;
  ShowMessage('控件是否存在:' + BoolToStr(Assigned(MyEdit), True));

  { 释放并 nil }
  MyEdit := TEdit.Create(Self);
  try
    MyEdit.Parent := Self;
    MyEdit.Show;
    Caption := BoolToStr(Assigned(MyEdit), True);
  finally
    MyEdit.Free;
    MyEdit := nil; { 这里的两行代码一般合起来写为 FreeAndNil(MyEdit) }
  end;
  ShowMessage('控件是否存在:' + BoolToStr(Assigned(MyEdit), True));
end;

3、其他关于 指针 Poniters 的 和 @ 运算符的说明

  

创建时间:2021.08.12  更新时间:

相关