Pascal 精要笔记
Pascal 语言的大小写不敏感特性有一个例外:控件包中的 Register 过程必须以大写字母 R 开始,因为需要与 C++Builder 兼容。
,编译器不编译代码中的空格、空行和 Tab键空格,这些元素通称为空白,它们只用来提高代码的可读性,不影响编译过程。(也就是说: = 这样的写法没有问题,我原来还以为由问题那!)
记住要用代码模板(方便开发)快捷键: Ctrl+J
** Absolute ** 关键字是共享变量地址有些象C++的共用体
var
Str: string[32];
StrLen: Byte absolute Str;
与大多数编程语言相反, Pascal语言中and和or运算符的优先级比关系运算符高。因此,如果你的代码为a < b and c < d,编译器首先会编译and运算符,由此导致编译出错。为此你应该把每个 < 表达式用小括号括起来: (a < b) and (c < d)。
集合,集合除了 并( + )差 (-) 交 (*) 等可以用 INCLUDE 和 EXCLUDE 效率更高
Include (Style, fsBold);
** 当时间和日期转换成字符串时,其转换格式取决于 Windows ** ** 的系统设置。 **
** Round ** ** 转换一个实型值为四舍五入后的整型值 **
** 注意 ** :在最近版本的 Delphi Pascal 编译器中, Round 函数是以 CPU 的 FPU ( 浮点部件 ) 处理器为基础的。这种处理器采用了所谓的 " 银行家舍入法 " ,即对中间值 ( 如 5.5 、 6.5) 实施 Round 函数时,处理器根据小数点前数字的奇、偶性来确定舍入与否,如 5.5 Round 结果为 6 ,而 6.5 Round 结果也为 6, 因为 6 是偶数。并不只是 DELPHI 这样( VB 也这样 )
注意 :一般来说,你应该避免使用上述不命名类型,因为你不能把它们作为参数传给例程,也不能用于声名同一类型的其他变量。实际上, Pascal的类型兼容规则是基于类型名的,而不是基于实际的类型定义。两个类型相同的变量仍有可能是不兼容的,除非他们的类型有完全相同的名字。对于不命名类型,需要编译器给它分配一个内部名字,因此对于数据结构复杂的变量,要习惯于定义命名数据类型,你一定不会为此白费工夫的。
Delphi 编译会通过,但在运行时,如果你开启了范围检查编译选项(在工程选项对话框的编译器页设置),你将得到 Range check error (范围检测错误)信息。
注意 :建议你在开发程序时开启上述编译选项,以使程序更健壮并易于调试。这样即使遇上错误,你也会得到一个明确的信息而不是难以琢磨的行为。最终完成程序时你可以去掉这个选项,使程序运行得快一些,不过影响很小。因此我建议你开启所有运行时的检测选项,如溢出检查和堆栈检查,甚至提交程序时仍然保留它们
Delphi 长字符串的情况略有不同,长字符串看起来象引用,但是如果你改变了该字符串的串变量,那么这个串在更新前将被拷贝下来。作为值参被传递的长字符串只在内存使用和操作速度方面才象引用,但是如果你改变了字符串的值,初始值将不受影响。相反,如果通过引用传递长字符串,那么串的初始值就可以改变。
实质上字符串的值传递类似引用,只不过系统在幕后进行了操作,这样效率会低。
在 Delphi 中不常使用指针,但是你经常会用一个极为相似的结构 -- 引用( references )。每个对象实例实际上是一个隐含的指针,或说是对其实际数据的引用,利用引用,你能象用其他数据类型一样使用对象变量。
当通过引用传递参数时,引用参数用关键字 _ var _ 标示
**procedure** DoubleTheValue ( **var** Value: Integer);
Delphi 3增加了一种新的参数:out。out参数没有初始值,只是用来返回一个值。out参数应只用于COM过程和函数,一般情况下最好使用更有效的var参数。除了没有初始值这一点之外,out参数与var参数相同。
常量参数,不能够在过程或函数中改变传递过来的值。只可使用。
果你只传递数组的一部分,可使用 Slice 函数,
明一个过程或函数,而且只给出它的名字和参数,不列出其实现代码,需要在句尾加 forward 关键字:
关键字表
** 关键字 ** ** **
|
** 作用 ** ** **
---|---
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 <SPAN