我学Delphi心得及笔记----编写Delphi代码(第一讲)
第一讲内容:
1、注释
Delphi注释分为三种:
1.1: //this is my code.--- 单行注释。
1.2: (* this is my code *)-----这种方式在欧洲使用较广 ,因为欧洲的键盘缺少大括号。
1.3:{this is my code}---段落注释
2、使用大写字母Delphi语言的大小写不区分)
Pascal 编译器(不象其他语言的编译器)不考虑字符的大小写,因此标识符Myname、 MyName、 myname、 myName、 和MYNAME是完全相同的。总体上来说,这是Pascal的一大优点,因为在大小写敏感的语言中,许多语法错误是由不正确的大写引起的。:写使用的一致 性不是编译器强制要求的,但是保持大写使用的一致性是值得提倡的好习惯。一个常用的方法是将每个标识符的第一个字母大写,标识符若由几个词组合而成(中间 不能插入空格),每个词的第一个字母应写:MyLongIdentifier,MyVeryLongAndAlmostStupidIdentifier
关于代码编写风格的最后一条建议是:尽量使用空白优化版面。这一条很容易做到,只需要在写复合句时,以上一句为参照,下一句向右缩进两个空格,复合句内嵌的复合句缩进四个空格,依此类推。例如:
if ... then
statement;
if ... then
begin
statement1;
statement2;
end;
if ... then
begin
if ... then
statement1;
statement2;
end;
3、关键字
关键字是Object 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 | 运算符 (布尔) |
4、表达式和运算符
建立表达式没有通用的方法,因为要取决于所用的运算符,Pascal包括有逻辑运算符、算术运算符、布尔运算符、关系运算符和集合运算符等等。
表达式可用于确定赋给一个变量的值、计算函数或过程的参数、或者判断一个条件,表达式也可以包含函数调用。表达式是对一个标识符的值而不是标识符本身进行运算。
运算符及其优先级 所有编程语言中的表达式都是常量、变量、数值、运算符和函数值的合法组合。表达式可以传递给过程或函数的值参,但不能传递给过程或函数中的引用参数。
如果你以前写过程序,那么你已经知道表达式是什么了。这里我专门讲一下Pascal 运算符的特殊部分:运算符的优先级。表2.2中按优先级分组列出了Pascal语言的运算符。
与大多数编程语言相反,Pascal语言中and和or运算符的优先级比关系运算符高。因此,如果你的代码为a < b and c < d,编译器首先会编译and运算符,由此导致编译出错。为此你应该把每个 < 表达式用小括号括起来: (a < b) and (c < d)。
同一种运算符用于不同数据类型时它的作用不同。例如,运算符 + 可以计算两个数字的和、连接两个字符串、求两个集合的并集、甚至给PChar 指针加一个偏移量。然而,你不能象在C语言中那样将两个字符相加。
另一个特殊的运算符是 div。在Pascal 中,你能用 / 计算两个数字(实数或整数)的商,而且你总能得到一个实型结果。如果计算两个整数的商并想要一个整型结果,那么就需要用 div 运算符。
| 单目运算符 (最高优先级) | |
|---|---|
| @ | 取变量或函数的地址(返回一个指针) |
| not | 逻辑取反或按位取反 |
| 乘除及按位运算符 | |
| * | 相乘或集合交集 |
| / | 浮点相除 |
| div | 整数相除 |
| mod | 取模 (整数相除的余数) |
| as | 程序运行阶段类型转换 (RTTI运算符) |
| and | 逻辑或按位求和 |
| shl | 按位左移 |
| shr | 按位右移 |
| 加减运算符 | |
| + | 相加、集合并集、字符串连接或指针增加一个偏移量 |
| - | 相减、集合差集或指针减少一个偏移量 |
| or | 逻辑或按位或运算 |
| xor | 逻辑或按位异或运算 |
| 关系及比较运算符(最低优先级) | |
| = | 判断是否相等 |
| <> | 判断是否不相等 |
| < | 判断是否小于 |
| > | 判断是否大于 |
| <= | 判断是否小于或等于,或是否是一个集合的子集 |
| >= | 判断是否大于或等于,或是否是一个集合的父集 |
| in | 判断是否是集合成员 |
| is | 判断对象是否类型兼容 (又一个RTTI运算符) |
5、集合运算符
集合运算符包括并(+)、差(-)、交(*)、成员检测(in),及一些关系运算符。要把一个元素添加到集合中,你可以采用集合并运算。下面是一个选择字体的Delphi 例子:
Style := Style + [fsBold]; Style := Style + [fsBold, fsItalic] - [fsUnderline];
另一种方法是利用标准过程Include 和Exclude,它们效率更高(但不能用于控件的集合类型属性,因为只能操纵一个元素):
Include (Style, fsBold);
浙公网安备 33010602011771号