其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

Delphi面向对象的编程方法(三)


发布日期:2024年02月07日
 
Delphi面向对象的编程方法(三)

跳转语句

Object Pascal的跳转语句有if和case两个

语句

if语句会计算一个表达式并根据计算结果决定程序流程在上文的例程中根据ColorDialogExecute的返回值决定窗体的背景颜色if保留字后跟随一个生成Boolean值True或False的表达式一般用=作为关系运算符比较产生一个布尔型值当表达式为True时执行then后的语句否则执行else后的代码if语句也可以不含else部分表达式为False时自动跳到下一行程序

if语句可以嵌套当使用复合语句表达时复合语句前后需加上begin…endelse保留字前不能加而且编译器会将else语句视为属于最靠近的if语句必要时须使用begin…end保留字来强迫else部分属于某一级的if语句

case语句

case语句适用于被判断的变量或属性是整形字符型枚举型或子界型时(LongInt除外)用case语句进行逻辑跳转比编写复杂的if语句容易阅读而且程序代码整形较快

下面的例程显示一个使用case语句的窗体

建立如下的事件处理过程

procedure TFormButtonClick(Sender: TObject);

var

Number : Integer;

begin

Number := StrToInt(EditText);

case Number of

: LabelCaption := 奇数;

: LabelCaption := 偶数;

:

begin

LabelCaption := 之间;

FormColor := clBlue;

end;

else

LabelCaption := 大于或为负数;

end;

end;

执行程序当Edit部件接受到一个值并按动OK按钮触发程序后Number便被赋值为用户输入的数值case语句根据Number的值判断该执行哪一条语句象if语句一样case语句也有可选择的else部分case语句以end结尾

循环语句

Object Pascal的循环语句有三种repeatwhile和for语句

repeat语句

repeat语句会重复执行一行或一段语句直到某一状态为真语句以repeat开始以until结束其后跟随被判断的布尔表达式参阅以下的例程

i := ;

repeat

i := i+;

Writen(i);

until i=;

当此语句被执行时窗体的下方会出现的数字布尔表达式 i= (注意与其他语言不同的是=是关系运算符而不能进行赋值操作)直到repeatuntil程序段的结尾才会被计算这意味着repeat语句至少会被执行一次

while语句

while语句和repeat语句的不同之处是它的布尔表达式在循环的开头进行判断while保留字后面必须跟一个布尔表达式如果该表达式的结果为真循环被执行否则会退出循环执行while语句后面的程序

下面的例程达到和上面的repeat例程达到同样的效果

i := ;

while i< do

begin

i := i+;

writeln(i);

end;

for语句

for语句的程序代码会执行一定的次数它需要一个循环变量来控制循环次数您需要说明一个变量它的类型可以是整形布尔型字符型枚举型或子界型

下面的程序段会显示的数字i为控制变量

var

i : integer;

for i := to do

writeln(i);

以上介绍了三种循环语句如果您知道循环要执行多少次的话可以使用for语句for循环执行速度快效率比较高如果您不知道循环要执行多少次但至少会执行一次的话选用repeatuntil语句比较合适当您认为程序可能一次都不执行的话最好选用whiledo语句

程序模块

程序模块在Object Pascal中是很重要的概念它们提供了应用程序的结构决定了变量属性值的范围及程序执行的过程它由两个部分组成可选择的说明部分和语句部分如果有说明部分则必在语句部分之前说明部分包括变量说明常量说明类型说明标号说明程序函数方法的说明等语句部分叙述了可执行的逻辑行动

在Delphi中最常见的程序模块便是事件处理过程中的程序模块下面的事件处理过程是含有变量说明部分的程序模块

procedure TFormButtonClick(Sender Tobject);

var {程序模块的说明部分}

Name : string;

begin {程序模块的语句部分}

Name := EditText;

EditText := Welcome to Delphi+Name;

end; {程序模块结束}

库单元也是程序模块库单元的interface部分含有库函数类型私有公有域的说明也可以含有常量变量的说明这一部分可以作为程序模块的说明部分在库单元的implementation部分中通常含有各种事件处理过程它们可以视为模块的语句部分是事件处理模块库单元模块结束于库单元结束的end

程序模块中可以包含其他的程序模块上文库单元模块中含有事件处理模块而库单元模块实际是在工程程序模块中

所有的Delphi应用程序都有相同的基本结构当程序逐渐复杂时在程序中加入模块即可例如在库单元模块中加入事件处理模块向工程中加入库单元模块等模块化编程使得程序结构良好并且对数据具有保护作用

关于作用范围

标识符的作用范围

一个变量常量方法类型或其他标识符的范围定义了这个标识符的活动区域对于说明这个标识符的最小程序模块而言此标识符是局部的当您的应用程序在说明一个标识符的程序模块外执行时该标识符就不在此范围内这意味着此时执行的程序无法访问这个标识符只有当程序再度进入说明这个标识符的程序模块时才可以访问它

下面的示意图表示一个含有两个库单元的工程每个库单元中又各有三个过程或事件处理过程

访问其他程序模块中的说明

您可以在当前的程序模块中访问其他程序模块中的说明例如您在库单元中编写一个事件处理过程来计算利率则其他的库单元可以访问这个事件处理过程要访问不在当前库单元中的说明应在这个说明之前加上其他应用程序的名称和一个点号()例如在库单元Unit中有事件处理过程CalculateInterest过程现在您想在库单元Unit中调用这一过程则可以在Unit的uses子句中加入Unit并使用下面的说明

UnitCalculateInterest(PrincipalInterestRate : Double)

应用程序的代码不能在一个模块外访问它说明的变量事实上当程序执行跳出一个模块后这些变量就不存在于内存中了这一点对于任何标识符都是一样的不管事件处理过程过程函数还是方法都具有这一性质这样的标识符称为局部变量

上一篇:新手学堂:Delphi基础开发技巧浅析

下一篇:用Delphi 3.0编制MP3音乐点歌台