DELPHI语法基础(1)
注释
在Pascal中,注释括在大括号中或带星号的圆括号中。Delphi 也认可C 风格的注释,即把注释放在双斜线后。例如
{this is a comment}
(* this is another comment *)
// this is a comment up to the end of the line
第一种注释方式较简略,使用也较为普遍;第二种方式在欧洲使用较广 ,因为欧洲的键盘缺少大括号;第三种方式的注释是从C 借用来的,只在32位版本的Delphi中可用,它在给一行代码加短注释时非常有用。
上述三种不同的注释方式有益于进行嵌套注释。例如你要注销一段代码,而代码行中又包含真正的注释行,这时采用同一种注释方式是不对的:
{ ... code
{comment, creating problems}
... code }
正确的方法是插入第二种注释方式:
{ ... code
//this comment is OK
... code }
注意:如果左大括号或圆括号-星号后面跟美元符号($),那么其中的内容就成了编译指令,如 {$X }。
使用大写字母
Pascal 编译器(不象其他语言的编译器)不考虑字符的大小写,因此标识符Myname、 MyName、 myname、 myName、 和MYNAME是完全相同的。总体上来说,这是Pascal的一大优点,因为在大小写敏感的语言中,许多语法错误是由不正确的大写引起的。
然而大小写不敏感也有不便之处:第一,你必须注意大小写不一致的标识符实际上是相同的,以避免把他们当成不同的元素使用;第二,你必须尽量保持大写使用的一致性,以提高代码的可读性。
大写使用的一致性不是编译器强制要求的,但是保持大写使用的一致性是值得提倡的好习惯。一个常用的方法是将每个标识符的第一个字母大写,标识符若由几个词组合而成(中间不能插入空格),每个词的第一个字母应大写:
MyLongIdentifier
MyVeryLongAndAlmostStupidIdentifier
此外,编译器不编译代码中的空格、空行和Tab键空格,这些元素通称为空白,它们只用来提高代码的可读性,不影响编译过程。
不同于BASIC, Pascal 语句允许分行书写,即将一条长指令分割成两个或更多的代码行。允许语句分行的缺点(至少对许多BASIC程序员)是:语句结束时不能忘了加分号,更确切地说,必须记着把语句和紧接它的语句分开。语句分行唯一的限制是字符串不能跨行。
关于空格和语句分行的使用没有既定的规则,以下是几点经验:
· Delphi 代码编辑器中有一条竖线叫右边线(Right Margin),你可以把右边线设置在60或70个字符处。如果以这条线为基准,代码不超过这条界限,那么打印到纸上的代码看起来会很好看。否则,打印时长语句会被随意分行,甚至在一个词的中间断开。
· 当一个函数或过程有多个参数,通常的做法是把各参数放在不同的行上。
· 你可以在注释行前留一行空白,或把长的代码句分成较小的部分,这样能提高代码的可读性。
· 用空格隔开函数调用的参数,表达式中的运算符也最好用空格隔开。
优化版面
关于代码编写风格的最后一条建议是:尽量使用空白优化版面。这一条很容易做到,只需要在写复合句时,以上一句为参照,下一句向右缩进两个空格,复合句内嵌的复合句缩进四个空格,依此类推。例如:
if ... then
statement;
if ... then
begin
statement1;
statement2;
end;
if ... then
begin
if ... then
statement1;
statement2;
end;
相似的缩进格式常用于变量或数据类型声名区,也可用于语句的续行:
type
Letters = set of Char;
var
Name: string;
begin
{ long comment and long statement, going on in the
following line and indented two spaces }
MessageDlg ('This is a message',
mtInformation, [mbOk], 0);
提出以上代码编写格式只是向你建个议而已,这样代码能更加易读,其实代码格式并不影响编译结果。
关键字
关键字是Object Pascal 的保留标识符,在语言中有着特殊含义。保留字不能用作标识符,指令字也同样不应该用作标识符,即使编译器允许也最好不用。在实际中你不应该把任何关键字用作标识符。
表2.1是面向对象 Pascal 语言(Delphi 4)中特殊标识符的完整列表,其中包括关键字及保留字。
表2.1:面向对象Pascal语言中的关键字及保留字
| 关键字 |
作用 |
| absolute |
指令 (变量) |
| abstract |
指令 (方法) |
| and |
运算符 (布尔) |
| array |
类型 |
| as |
运算符 (RTTI) |
| asm |
语句 |
| assembler |
向后兼容 (汇编) |
| at |
语句 (异常处理) |
| automated |
访问类别符 (类) |
| begin |
块标记 |
| case |
语句 |
| cdecl |
函数调用协定 |
| class |
类型 |
| const |
声明或指令(参数) |
| constructor |
特殊方法 |
| contains |
运算符 (集合) |
| default |
指令 (属性) |
| destructor |
特殊方法 |
| dispid |
dispinterface 界面类别符 |
| dispinterface |
类型 |
| div |
运算符 |
| do |
语句 |
| downto |
语句 (for) |
| dynamic |
指令 (方法) |
| else |
语句 (if 或 case) |
| end |
块标记 |
| except |
语句 (异常处理) |
| export |
向后兼容 (类) |
| exports |
声明 |
| external |
指令 (函数) |
| far |
向后兼容 (类) |
| file |
类型 |
| finalization |
单元结构 |
| finally |
语句 (异常处理) |
| for |
语句 |
| forward |
函数指令 |
| function |
声明 |
| goto |
语句 |
| if |
语句 |
| implementation |
单元结构 |
| implements |
指令 (属性) |
| in |
运算符 (集合) - 工程结构 |
| index |
指令 (dipinterface界面) |
| inherited |
语句 |
| initialization |
单元结构 |
| inline |
向后兼容 (见 asm) |
| interface |
类型 |
| is |
运算符 (RTTI) |
| label |
声明 |
| library |
程序结构 |
| message |
指令 (方法) |
| mod |
运算符 (数学) |
| name |
指令 (函数) |
| near |
向后兼容 (类) |
| nil |
数值 |
| nodefault |
指令 (属性) |
| not |
运算符 (布尔) |
| object |
向后兼容 (类) |
| of |
语句 (case) |
| on |
语句 (异常处理) |
| or |
运算符 (布尔) |
| out |
指令 (参数) |
| overload |
函数指令 |
| override |
函数指令 |
| package |
程序结构 (控件包) |
| packed |
指令 (记录) |
| pascal |
函数调用协定 |
| private |
访问类别符 (class) |
| procedure |
声明 |
| program |
程序结构 |
| property |
声明 |
| protected |
访问类别符 (类) |
| public |
访问类别符 (类) |
| published |
访问类别符 (类) |
| raise |
语句 (异常处理) |
| read |
属性类别符 |
| readonly |
dispatch 界面类别符 |
| record |
类型 |
| register |
函数调用协定 |
| reintroduce |
函数指令 |
| repeat |
语句 |
| requires |
程序结构 (控件包) |
| resident |
指令 (函数) |
| resourcestring |
类型 |
| safecall |
函数调用协定 |
| set |
类型 |
| shl |
运算符 (数学) |
| shr |
运算符 (数学) |
| stdcall |
函数调用协定 |
| stored |
指令 (属性) |
| string |
类型 |
| then |
语句 (if) |
| threadvar |
声明 |
| to |
语句 (for) |
| try |
语句 (异常处理) |
| type |
声明 |
| unit |
单元结构 |
| until |
语句 |
| uses |
单元结构 |
| var |
声明 |
| virtual |
指令 (方法) |
| while |
语句 |
| with |
语句 |
| write |
属性类别符 |
| writeonly |
dispatch 界面类别符 |
| xor |
运算符 (布尔) |


