首页 > 代码库 > Object Pascal 语法之语言基础(一)

Object Pascal 语法之语言基础(一)

Delphi 是以Object Pascal 语言为基础的可视化开发工具,所以要学好Delphi,首先要掌握的就是Object Pascal 语言。
1 语言基础

Object Pascal 语言是在Pascal 语言的基础上发展起来的,它继承了Pascal 语言语法严谨、数据结构丰富等优点,同时融入了面向对象编程的语法要素,使之成为一个完善的面向对象的编程语言。

 

1.1 Object Pascal 语言编写环境


随着Windows 操作系统的普及,很少有人在DOS 环境下编写程序了,下面将为读者介绍如何使用Delphi 编写Object Pascal 程序。

一般来说,使用Delphi 开发出来的程序有以下3 种。
1.图形界面程序
  图形界面程序是目前Windows 平台最常见的应用程序,这些程序通过窗体和对话框与用户进行信息交互,实现一定的功能。例如Microsoft 公司的Office 系列软件和正在使用的Delphi 等,它们都是图形界面程序。
2.控制台程序
  控制台程序是指一些没有图形用户界面的32 位Windows 应用程序,类似在DOS 环境下运行的程序。这些程序很少要求用户输入大量的信息,一般只实现特定的功能。控制台程序的代码较小,占用的系统资源少,因此编译、链接的速度比较快。
3.服务器程序
  服务器程序可以接受和处理客户应用程序的请求,并将结果信息返回给客户应用程序。服务器应用程序一般在后台运行,不需要大量的人机交互信息。


下面以开发一个简单的控制台程序为例,向读者介绍Delphi 中生成Object Pascal 程序的基本方法,并对Object Pascal 程序的一般结构进行简单说明。

在Delphi 集成开发环境中,依次选择"File/New/Other"菜单项打开"New Items"对话框。选中"New"标签页中的"Console Application"选项,单击"OK"按钮,代码编辑器中将自动打开一个初始名为Project1.dpr 的控制台程序。请将Project1.dpr 文件修改为如下内容:

program Project1;{$APPTYPE CONSOLE}//uses SysUtils;var    str:string;begin    // Insert user code here    writeln(’您好,这是一个示范程序,请输入一行文字:’);    readln(str);    writeln(’您输入的是:’,str);    readln;end.

依次选择“File”/“Save All”菜单项可以将更改后的工程文件保存到指定的文件夹中。按 F9 键进入编译、链接、运行程序。待程序提示“您好,这是一个示范程序,请输入一行文字:”文字后,用户可以输入一些内容,例如输入“早上好!”,程序将输出结果:“您输入的是:早上好!”。

以下是对该程序的几点说明:

  • 程序第2 行中{$APPTYPE CONSOLE}是一个编译器指令,它告诉编译器这个程序是一个控制台程序。
  • uses SysUtils 语句前加了两个斜线,将这条语句以注释语句的形式屏蔽掉了,因为在这个例子中是不需要SysUtils 单元的。
  • writeln 和readln 两个函数分别表示输出和输入一行字符。程序最后的readln 语句是为了锁定窗口,否则输出结果将很快消失。

 

1.2 注释语句


作为起点,首先介绍如何在Object Pascal 代码中添加注释。如果不给程序加上适当的注释,一段时间后就很难理清程序的流程。同时编译器会将注解忽略,不会影响程序的编译与运行。

Object Pascal 中有3 种类型的注释。

  1. 花括号注释:组合符号“{”和“}”的成对使用,表示它们之间的内容是注释部分。
  2. 圆括号/星号注释:组合符号“(*”和“*)”的成对使用,表示它们之间的内容是注释部分。
  3. Visual C++风格的双斜杠注释:符号“//”的单独使用,表示后面的内容是注释部分。

看下面的例子:

  {花括号注释}  (*圆括号/星号注释*)  //C++风格的注释

前两种注释在本质上是相同的,编译器把处于限定符头和限定符尾中间的内容当作注释。花括号圆括号/星号比较适合在大段注释时使用。如果在“{”或“(*”后面是一个“$”符号时,表示该句为一个编译器指令,与普通的注释不同,通常用来对编译过程进行设置,例如1.1 节中示例的第2行代码:

{$APPTYPE CONSOLE}

对于Visual C++风格的注释来说,双斜杠后面到行尾的内容被认为注释。此形式比较适用于单行和少量几行注释的情况。

注意,相同类型的注释不要嵌套使用。虽然不同类型的注释进行嵌套在语法上是合法的,但不建议这样做。例如:

{(*这是合法的*)}(*{这是合法的}*)(*(*这是非法的*)*){{这是非法的}}

 

1.3 标识符


Object Pascal 语言使用的标识符包括字母A-Z、a-z、数字0-9 及其他一些标准字符。

表1-1 所示的单个字符是Object Pascal 语言的特殊符号。

表1-1 Object Pascal 语言的特殊符号的单个字符

特殊符号
$ & * # * (  )  [  ] {  }  ^  ;  :  @  <  =  >  ,  .  * +  / 

    
表1-2 所示的字符组合是Object Pascal 语言的单个的特殊符号。
表1-2  Object Pascal 语言的特殊符号的字符组合 

特殊符号
(*  *)  (.  .)  ..  //  :=  <>  >=  <=    


注意:[ ]与(. .)对应,{ }与(* *)对应。含义完全相同,可以相互替代。


在Object Pascal 语言中,标识符用来标识变量、常量、属性、类、对象、过程、函数、程序、组件库等。标识符可以由任意长度不带空格的字符串组成,但对于编译器来讲只有前面255个字符有效。其中,标识符的第1个字符必须是字母或下划线,其余字符可以是字母、数字或下划线。通常,标识符由一个或多个具有适当意义的英文单词组成。Object Pascal 语言对区分字母的大小写是不敏感的。在编程过程中,最好每个单词的首字母大写,其他字母小写,以便于区分。

 

1.4 保留字和指令字


Object Pascal 语言定义了67 个保留字,它们不能被定义为标识符,如表1-3 所示。
表1-3  Object Pascal 语言的保留字 

保留字
and  array  as  asm  begin  case  class 
const  constructor  destructor  interface  div  Do  down 
to  else  end  except  exports  file  finalization 
finally  for  function  goto  if  implementation  in 
inherite  initialization  inline  is  interface  label  library 
mod  Nil  not  object  of  or  out 
packed  procedure  program  property  raise  record  repeat 
resource  string  set  shl  shr  then  thread 
var  to  try  type  unit  until  uses 
var  while  with  xor

       
Object Pascal 还定义了39 个指令字,它们具有特殊含义。但是,在用户重新定义了指令字后,在作用域内它们就失去了原来的意义,如表1-4 所示。
表1-4  Object Pascal 语言的指令字 

指令字

absolute  abstract  assembler  automated  cdecl  contains 

default  dispid  dynamic  export  external  far 

forward  implements  index  message    name  near 

nodefault  overload  override  package  pascal  private 

protected  public  published  read  readonly  register

reintroduce requires resident safecall stdcall stored

virtual write writeonly

 

其中Private、Protected、Public、Published、Automated、On 和At 是指令字,但是,应当视其为保留字,不要定义和它们同名的标识符。在Delphi 集成开发环境的代码编辑器中,保留字和指令字以黑体显示,这样就大大方便了用户的使用,不必担心因为不小心而错误地将保留字或指令字定义为标识符。