- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的
服务器维护
,企业网站维护
,网站维护
服务 - (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
作者:黑客防线网安网站维护基地 来源:黑客防线网安网站维护基地 浏览次数:0本篇关键词:Delphi
|
在Delphi中,最常见的程序模块便是事件处理过程中的程序模块。下面的事件处理过程是含有变量说明部分的程序模块:
procedure TForm.Button1Click(Sender Tobject);
var {程序模块的说明部分}
Name : string;
begin {程序模块的语句部分}
Name := Edit1.Text;
Edit2.Text := 'Welcome to Delphi'+Name;
end; {程序模块结束}
库单元也是程序模块。库单元的interface部分含有库函数、类型、私有,公有域的说明,也可以含有常量、变量的说明。这一部分可以作为程序模块的说明部分。在库单元的implementation部分中通常含有各种事件处理过程,它们可以视为模块的语句部分,是事件处理模块。库单元模块结束于库单元结束的end.处。
程序模块中可以包含其他的程序模块。上文库单元模块中含有事件处理模块。而库单元模块实际是在工程程序模块中。
所有的Delphi应用程序都有相同的基本结构。当程序逐渐复杂时,在程序中加入模块即可。例如在库单元模块中加入事件处理模块,向工程中加入库单元模块等。模块化编程使得程序结构良好,并且对数据具有保护作用。
2.1.7 关于作用范围
2.1.7.1 标识符的作用范围
一个变量、常量、方法、类型或其他标识符的范围定义了这个标识符的活动区域。对于说明这个标识符的最小程序模块而言,此标识符是局部的。当您的应用程序在说明一个标识符的程序模块外执行时,该标识符就不在此范围内。这意味着此时执行的程序无法访问这个标识符,只有当程序再度进入说明这个标识符的程序模块时,才可以访问它。
下面的示意图表示一个含有两个库单元的工程,每个库单元中又各有三个过程或事件处理过程。
2.1.7.2 访问其他程序模块中的说明
您可以在当前的程序模块中访问其他程序模块中的说明。例如您在库单元中编写一个事件处理过程来计算利率,则其他的库单元可以访问这个事件处理过程。要访问不在当前库单元中的说明,应在这个说明之前加上其他应用程序的名称和一个点号(.)。例如,在库单元Unit1中有事件处理过程CalculateInterest过程,现在您想在库单元Unit2中调用这一过程,则可以在Unit2的uses子句中加入Unit1,并使用下面的说明:
Unit1.CalculateInterest(PrincipalInterestRate : Double);
应用程序的代码不能在一个模块外访问它说明的变量。事实上,当程序执行跳出一个模块后,这些变量就不存在于内存中了。这一点对于任何标识符都是一样的,不管事件处理过程、过程、函数还是方法,都具有这一性质。这样的标识符称为局部变量。
2.1.7.3 按照作用范围说明标识符
您可以在应用程序的不同地方说明一个标识符,而只需保证它们的有效范围不同即可。编译器会自动访问最靠近当前范围的标识符。
库单元的全局变量一般可以说明在保留字implementation后面。例如,下面的例程实现将两个编辑框中的整数相加,显示在第三个编辑框中。用到了一个整形的全局变量Count:
…implememntation
var
Count : Integer;
procedure TForm1.AddClick(Sender:TObject);
var
FirstNumber,SecondNumber:Integer;
begin
Count := Count + 1;
Counter.Text := IntToStr(Count);
FirstNumber := StrToInt(Edit1.Text);
SecondNumber := StrToInt(Edit2.Text);
Edit3.Text := IntToStr(FirstNumber+SecondNumber);
end;
…
为了实现每按动一次按钮Count增加一次,必须对全程变量Count进行初始化处理。在程序库单元的结尾处,最后一个end.保留字之前,加入保留字initialization和初始化Count的代码:
…
initialization
Count := 0;
这样当事件处理过程AddClick被触发时,Count就会被增加一次,以表征计算次数。如果用面向对象编程,则Count可以说明成窗体的一个域,这在下一节中将有讲述。
2.1.8 编写一个过程或函数
在您开发Delphi应用程序时,所需的大部分代码都编写在事件处理过程中,但有时仍然需要编写不是事件处理过程的函数或过程。例如,您可以把在多个事件处理过程中用得到语句编写成过程,然后任何事件处理过程、过程、函数都可以象调用已经存在的过程或函数一样直接调用它。好处是您只需编写一次代码,而且程序代码会比较清楚。
2.1.8.1 一个自行编写的函数例程
在上文两个数相加的程序中,如果编辑框中无值,则会使得程序出错中断。为避免这种情况,编写下面的函数,检查编辑框中是否有值,如无值,则提醒用户输入:
function NoValue(AnEditBox:TEdit):Boolean;
begin
if AnEditBox.Text='' then
begin
AnEditBox.Color := clRed;
AnEditBox.Text := '请输入整数值';
Result := True;
end
else
begin
AnEditBox.Color := clWindow;
Result := False;
end;
end;
NoValue函数会检查编辑框是否为空,如果是,编辑框颜色变红,并提醒用户输入一个整数,然后函数返回真值;Result保留字在Delphi中用来专指函数返回值。在上文的例程中加入NoValue函数:
procedure TForm1.AddClick(Sender: TObject);
var
FirstNumber,SecondNumber : Integer;
begin
if NoValue(Edit1)or NoValue(Edit2) then
exit;
Count := Count + 1;
Counter.Text := IntToStr(Count);
FirstNumber := StrToInt(Edit1.Text);
SecondNumber := StrToInt(Edit2.Text);
Edit3.Text := IntToStr(FirstNumber+SecondNumber);
end;
如果其中的任何一个返回真值,则表示有编辑框空,会执行exit过程,使得当前的程序模块停止执行,并使得编辑框出现输值提示。当新值被输入后,再执行程序时,红色提示被隐去,恢复正常的计算状态。
我要申请本站:N点 | 黑客防线官网 | |
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |