Pascal精要笔记

类别:Delphi 点击:0 评论:0 推荐:
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运算符)

 

本文地址:http://com.8s8s.com/it/it4940.htm