delphi程序单元基础讲解 联系客服

发布时间 : 星期日 文章delphi程序单元基础讲解更新完毕开始阅读6cf2ae15fc4ffe473368aba6

其中Block是缺省方式,表示过程或函数的语句部分是 Pascal程序快,下面对External,Assembler,Forward进行介绍。 1.External

该指示字表示过程或函数是外部的,通常用于从动态链接库中引入过程或函数。External后可以动态链接库名或表示动态链接库的有序数,也可以指定引入的过程或函数名。例如:

function MessageBox(HWnd: Integer; Text, Caption: PChar; Flags: Integer): Integer; stdcall; external 'user32.dll' name 'MessageBoxA'; 上例中,user32.dll指定用于引入过程或函数的动态链接库名(也可以是一个有序数),MessageBox指定从动态链接库中引入过程或函数名。 (2)Assembler

该指示字表示过程或函数是使用嵌入式汇编语言编写的。例如函数声明: function LongMul(X, Y: Integer): Longint;Assembler 其定义为:

function LongMul(X, Y: Integer): Longint; (3)Forward

该指示字表示一个过程或函数是向前查找的。在声明了一个过程或函数是向前查找的之后,该过程或函数的定义必须在后面的某个地方定义。 procedure Walter(M, N: Integer); forward; procedure Clara(X, Y: Real);

begin ...

Walter(4, 5); end;

procedure Walter; begin ...

MessageBeep(0); end;

注意:不能在单元的interface部分声明向前查找过程。在使用向前查找过程时,要注意相互递归。

6.7.6 参数

当调用过程或函数时,常常需要使用参数传递数据给被调用的过程或函数。在某种程度上,使过程、函数更有用更灵活的方法就是使用参数。 在Pascal中,调用过程或函数使用的参数称为实参,被调用过程或函数使用的参数称为形参,例如,下面语句中,Edit1是实参:

ColorIt(Edit1);

下面的AnEditBox是形参:

Procedure ColorIt(AnEditBox:Tedit); Delphi传递参数的方式有四种: (1)传值(Passing By Value)。

变量和结构被完整地拷贝到堆栈中,而不是通过机器的寄存器。通过值传递参数可以防止调用的函数修改原来的参数,因为调用的函数接收到的只不过是参数的一个副本。例如:

procedure Tform1.Button1Click(Sender:Tobject); var Number:Integer; begin

Number:=StrToInt(Edit1.text); Calculate(Number);

Edit2.Text:=IntToStr(Number); end;

Procedure Calculate(CalcNo:Integer); begin

CalcNo:=CalcNo*10; end;

在Calculate过程中,CalcNo参数按值传递,执行该过程后,CalcNo的值扩大了十倍。但是,调用过程Tform1.Button1Click中Number并没有改变,因此Edit1编辑框与Edit2编辑框的值一样。 (2)传引用(Passing By Reference)。

传递一个指向参数的引用(指针),按规则引用可用作指针和值。改变引用传递的参数要影响调用源参数的拷贝。

使用传引用必须在参数前加上Var保留字。例如,把Calculate改写如下: procedure Calculate(Var CalcNo:Integer); begin

CalcNo:=CalcNo*10; end;

修改后,Calculate过程的CalcNo参数为按引用传递,执行该过程后,CalcNo的值扩大了十倍,同时,调用过程Tform1.Button1Click中Number也作了改变,因此Edit2编辑框的值是Edit1编辑框值的10倍。 (3)常量传递(Constant Parameters)。

如果过程或函数运行时,形参的值永远都不会改变,就可以考虑使用常数参数。要使一个参数为常数参数,只要在参数前加上Const保留字。例如:

function TDirectoryOutline.ForceCase(const AString: string): string; begin