1. 直接常量
所谓直接常量就是指直接引用的量,如数字123,字符串'abcd'
1.1 整型常量
1.2 实型常量
1.3 字符及字符串常量
1.4 布尔型常量
2. 声明常量
与直接常量不同,声明常量必须有一个合法的标识符,并在定义时对其赋值,一旦定义后此标识符的值不可在程序中被更改。
2.1 符号常量
2.2 资源字符串
用 resourcestring 来声明,例如:
resourcestring
str = 'delphi study';
问题: 使用 Const str = 'delphi study'也能编译通过,并且运行无误。两者间的区别还待研究。
如下例:
2.3 类型常量
语法格式为: <标识符>:<类型名> = <常量值>
注:IDE编译开关{$J+}时,类型常量可以被重新赋值,此时类型常量与普通变量无区别。delphi 2010默认此开关关闭,
若无意中开启,可以用{$J-}来关闭此开关
2.4 数组常量
一维数组常量可直接定义 Const MyArray:array[0..2] of char = 'abc';
多维数组常量需先定义数据类型后定义常量。如:
Type
TCube = array [0..2,0..1]of integer;
const
MyArray:TCube = ((1,2),(3,4),(5,6));
其各成员的值为:( 数组有两种表示方法 MyArray[0,0] 或MyArray[0][0] )
MyArray[0,0] = 1
MyArray[0,1] = 2
MyArray[1,0] = 3
MyArray[1,1] = 4
MyArray[2,0] = 5
MyArray[2,1] = 6
2.5 记录常量
声明记录常量时需要以“字段名:字段值”的形式知道那个每个字段的常量值,各个字段以分号间隔。对于变体记录,若其中
出现了一个tag值,则必须赋值;只有含有tag时变体记录中的部分才能被赋值,例如:
Type
Tpoint = record
x,y:integer;
end;
Trec = record
x:integer;
case tag:integer of
1:(i:integer);
2:(n:integer);
end;
const
origin:Tpoint = (x:0;y:1);
myRec:TRec =(x:1;tag:1;i:2;);
2.6 指针常量
指针常量在声明时可以使用任意一个变量的地址作为常量值。对于Pchar 或Pwidechar类型,声明时可以直接使用
一个字符串作为常量值。例如:
var
i:integer;
const
p:Pinteger = @i;
pstr:Pchar = 'abc';
需要说明的是: (1) 使用@i 时,在之前必须定义过变量i,若把 i 的定义放在其后,则编译出错。
(2) pstr 只是指向了字符串的第一个字符。类型为Pwidechar也是如此。