按照作用范围说明标识符
您可以在应用程序的不同地方说明一个标识符而只需保证它们的有效范围不同即可编译器会自动访问最靠近当前范围的标识符
库单元的全局变量一般可以说明在保留字implementation后面例如下面的例程实现将两个编辑框中的整数相加显示在第三个编辑框中用到了一个整形的全局变量Count
implememntation
var
Count : Integer;
procedure TFormAddClick(Sender:TObject);
var
FirstNumberSecondNumber:Integer;
begin
Count := Count + ;
CounterText := IntToStr(Count);
FirstNumber := StrToInt(EditText);
SecondNumber := StrToInt(EditText);
EditText := IntToStr(FirstNumber+SecondNumber);
end;
为了实现每按动一次按钮Count增加一次必须对全程变量Count进行初始化处理在程序库单元的结尾处最后一个end保留字之前加入保留字initialization和初始化Count的代码
initialization
Count := ;
这样当事件处理过程AddClick被触发时Count就会被增加一次以表征计算次数如果用面向对象编程则Count可以说明成窗体的一个域这在下一节中将有讲述
编写一个过程或函数
在您开发Delphi应用程序时所需的大部分代码都编写在事件处理过程中但有时仍然需要编写不是事件处理过程的函数或过程例如您可以把在多个事件处理过程中用得到语句编写成过程然后任何事件处理过程过程函数都可以象调用已经存在的过程或函数一样直接调用它好处是您只需编写一次代码而且程序代码会比较清楚
一个自行编写的函数例程
在上文两个数相加的程序中如果编辑框中无值则会使得程序出错中断为避免这种情况编写下面的函数检查编辑框中是否有值如无值则提醒用户输入
function NoValue(AnEditBox:TEdit):Boolean;
begin
if AnEditBoxText= then
begin
AnEditBoxColor := clRed;
AnEditBoxText := 请输入整数值;
Result := True;
end
else
begin
AnEditBoxColor := clWindow;
Result := False;
end;
end;
NoValue函数会检查编辑框是否为空如果是编辑框颜色变红并提醒用户输入一个整数然后函数返回真值Result保留字在Delphi中用来专指函数返回值在上文的例程中加入NoValue函数
procedure TFormAddClick(Sender: TObject);
var
FirstNumberSecondNumber : Integer;
begin
if NoValue(Edit)or NoValue(Edit) then
exit;
Count := Count + ;
CounterText := IntToStr(Count);
FirstNumber := StrToInt(EditText);
SecondNumber := StrToInt(EditText);
EditText := IntToStr(FirstNumber+SecondNumber);
end;
如果其中的任何一个返回真值则表示有编辑框空会执行exit过程使得当前的程序模块停止执行并使得编辑框出现输值提示当新值被输入后再执行程序时红色提示被隐去恢复正常的计算状态
过程和函数的标题
每一个过程或函数都以标题开始其中包括过程或函数的名称和它使用的参数过程以保留字procedure开始函数以保留字function开始参数位于括号里面每一个参数以分号分隔例如
procedure validateDate(Day : Integer; month : Integer; Year : Integer);
您也可以将相同类型的参数组合在一起则上述过程头写作
procedure ValidateDate(Day Month Year : Integer);
函数在标题中还多了一项返回值的类型下面是一个返回值为Double型的函数标题
function CalculateInterest(principalInterestRate:Double):Double;
函数和过程中的类型说明
一个过程或函数程序模块也含有说明部分和语句部分说明部分可以包括类型说明变量说明常量说明等除了Object Pascal语言中已经定义的类型之外Delphi的应用程序还可以建立新的数据类型类型说明部分有保留字type开始下面是一些类型的说明
type
Tcount = Integer;
TPrimaryColor = (RedYellowBlue);
TTestIndex = ;
TTextValue = ;
TTestList = array [TTestIndex] of TTestValue;
TCharVal = Ord(A)Ord(Z) ;
Today = (MondayTuesdayWednesdayThursdayFridaySaturdaySunday) ;
在类型标识符后面用=号定义了新的类型类型界定了变量的取值范围例如TCount类型的变量必须是整形值一个TPrimaryColor类型的变量只能是redyellow或blue等等每一个类型的名称都是由字母T开始这并非必须的但它是Delphi的惯例在区别类型名和标识符时非常有用类型说明可以是局部的也可以是全局的如果您把它放在implementation后面则表明对于库单元来讲它是全局的所有的事件处理过程和其他的过程函数都可以调用它如果类型是在过程中被说明的则是局部的离开这一过程该类型将失效
一般来讲在过程和函数中任何类型说明都在变量说明之前而任何变量说明都在常量之前但是只要
从说明必须在过程与函数的标题之后而且在程序代码之前即是有效的