Object Pascal 基本数据类型
Object Pascal 基本数据类型
注:以下标红的表示最常用的数据类型
整数类型
类型 | 大小 |
---|---|
Integer | 有符号32位 |
Cardinal | 无符号32位 |
Shortint | 有符号8位 |
Smallint | 有符号16位 |
Longint | 有符号32位及以上,具体取决于编译器和平台 |
Byte | 无符号8位 |
Word | 有符号16位 |
LongWord | 有符号32位及以上,具体取决于编译器和平台 |
实数类型
类型 | 大小 |
---|---|
Real | Delphi 中通常等同于 Double,表示双精度浮点数 |
Single | 单精度浮点数,精度较低但占用空间小 |
Extended | 扩展精度浮点数,精度高于 Double,但与其他平台的兼容性较差 |
Currency | 专门用于处理货币值的类型,保证至少4位有效小数位 |
字符类型
类型 | 大小 |
---|---|
Char | 标准的字符类型,存储单个字符,占用一个字节,与 AnsiChar 等同 |
AnsiChar | 主要存放 ANSI 字符,占用一个字节 |
WideChar | 主要存放 Unicode 字符,占用两个字节在 Delphi 7 中实现为 16 位 |
字符串类型
类型 | 大小 |
---|---|
String | 默认情况下String是AnsiString的别名 |
ShortString | 在0到255个字符之间 |
AnsiString | 它是动态分配的,长度没有限制 |
WideString | 用于存储Unicode字符,每个字符占用两个字节(在UTF-16编码下) |
布尔类型
类型 | 大小 |
---|---|
Boolean | 标准的布尔类型,取值为 False 和 True |
ByteBool | 1个字节 |
WordBool | 2个字节 |
LongBool | 4个字节 |
其他基本类型
- Enumerated
枚举类型
(定义一系列有序值的集合,元素一般从 0 开始连续索引) - Subrange
子界类型
(也是定义了一系列有序值的集合,但子界的有序值必须是在别的有序类型中定义过的)
示例代码
program BasicDataTypesDemo;
type
TMyEnum = (FirstValue, SecondValue, ThirdValue);
TMySubrange = 1..100;
var
i: Integer;
f: Real;
c: Char;
b: Boolean;
e: TMyEnum;
s: TMySubrange;
n: String;
begin
i := 10;
f := 3.14;
c := 'A';
b := True;
e := SecondValue;
s := 50;
n:= ’HelloWorld‘;
// 在这里可以进行更多的操作,比如输出这些变量的值
end.
Object Pascal 中的保留字
注:只列举了一部分
一、控制结构:
- if、then、else:用于条件判断
- case、of:用于多分支选择
- for、to、downto、while、repeat、until:用于循环控制
二、数据类型:
- integer、real、char、string、boolean等:用于声明基本数据类型
三、声明和定义:
- var:用于声明变量
- const:用于声明常量
- type:用于定义新的数据类型
- class、interface、object:用于面向对象编程中的类、接口和对象声明
四、异常处理:
- try、except、finally、raise:用于异常处理
五、访问修饰符:
- public、private、protected:用于控制类或对象的成员访问权限
六、其他:
- procedure、function:用于定义过程和函数
- begin、end:用于定义代码块的开始和结束。
- asm:用于内嵌汇编语言代码。
- constructor、destructor:用于类的构造和析构函数。
变量的声名
var
表示下面将定义一个或多个变量,多个以逗号分割
在 procedure
下声名的变量为局部变量
procedure TMainForm.ShowProcessListButtonClick(Sender: TObject);
var
resu,resu2: integer;
begin
// 作用域只在这部分
end;
在单元 implementation
部分声名的变量是单元级变量
procedure TMainForm.ShowProcessListButtonClick(Sender: TObject);
var
resu: integer;
begin
// 作用域只在这部分
end;
implementation
var
resu: integer;
// 作用域在之后都有效
在 interface
部分定义的变量是全局变量,其他引用该单元的单元也可以使用
interface
var
resu: integer;