Pascal精要笔记

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

Published At
Categories with Web编程
Tagged with
comments powered by Disqus