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、示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | { 定义各种数据类型 } 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的其他用法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | { 检测控件是否存在 } 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 更新时间:
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
2020-08-12 Delphi XE10 错误提示:security alert vmware
2019-08-12 [原创]Delphi 字符串函数(字符串判断 TryStrToFloat 、TryStrToInt、TryStrToInt64、TryStrToBool、TryStrToCurr、TryStrToDate、TryStrToTime、TryStrToDateTime)