Pascal精要笔记
2006-02-04 13:50:36 来源:WEB开发网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 |
语句 |
initialization |
单元结构
|