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 |
单元结构 |
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 |
运算符 (布尔) |
运算符优先级表
单目运算符 (最高优先级) |
@ |
取变量或函数的地址(返回一个指针) |
not |
逻辑取反或按位取反 |
乘除及按位运算符 |
* |
相乘或集合交集 |
/ |
浮点相除 |
div |
整数相除 |
mod |
取模 (整数相除的余数) |
as |
程序运行阶段类型转换 (RTTI运算符) |
and |
逻辑或按位求和 |
shl |
按位左移 |
shr |
按位右移 |
加减运算符 |
+ |
相加、集合并集、字符串连接或指针增加一个偏移量 |
- |
相减、集合差集或指针减少一个偏移量 |
or |
逻辑或按位或运算 |
xor |
逻辑或按位异或运算 |
关系及比较运算符(最低优先级) |
= |
判断是否相等 |
<> |
判断是否不相等 |
< |
判断是否小于 |
> |
判断是否大于 |
<= |
判断是否小于或等于,或是否是一个集合的子集 |
>= |
判断是否大于或等于,或是否是一个集合的父集 |
in |
判断是否是集合成员 |
is |
判断对象是否类型兼容 (又一个RTTI运算符) |

|