Object Pascal 过程与函数
Object Pascal 过程与函数
过程分为两种:
系统标准过程
(已经帮我们实现好的,我们只需要调用就可以)用户自定义过程
(需要我们自己来实现)
以
procedure
开头的就是一个过程(如按下一个按钮的点击事件就是一个过程)
// 以procedure 开关
procedure TForm1.Buton1Click(Sender: TObject);
语法格式:
procedure 过程名 ([形参列表]) // 参数可选
var
// 声明常量,变量或另一个过程或函数等
begin
// 语句
end;
注: 在过程中声名,定义的变量的声明周期只限于本过程
// 声名部分
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Myproc(Str: String); // 这个就是我们自己声名的一个过程
private
...
public
...
end;
var
Form1: TForm1;
// 实现部分
procedure TFrom1.Myproce(Str: String);
begin
Str: = 'HelloWorld';
ShowMessage(Str);
end;
Object Pascal 传值与传址
传值
传值就是声名时,传入的形参
procedure Myproc(Str: String); // 表示该过程,有一个参数,且没有返回值
注:形参传值时,会把传入的值拷贝一份,外部的值在被里面的过程修改后并不会发生改变,且值只在该过程中生效
传址
如果在过程和函数声名时,在形参名前面加var
保留字进行说明的话,就是传地址的方式,也称为引用参数
// 声名部分
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Myproc(var Str: String); // 这个就是我们自己声名的一个过程
private
...
public
...
end;
var
Form1: TForm1;
procedure TForm1.Button1Click(Sender: Tobject);
var
x: String;
begin
x:= "abc"
Myproc(x); // 此时是以地址的方式传入的参数
end;
// 实现部分
procedure TFrom1.Myproce(var Str: String);
begin
Str: = 'HelloWorld'; // 这里相当于用的外部x的地址
ShowMessage(Str);
end;
注:传址的方式,在过程中改变传入参数的值,外部的数据也会发生改变(
两个不同的名子指向了同一个地址
)
Object Pascal Const 常量
被const
修饰的参数也称为常量参数,如果希望这具值在以后都不会发生改变就可以用const
来修饰
// 声名部分
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Myproc(const Str: String); // 被修饰成常量
private
...
public
...
end;
var
Form1: TForm1;
procedure TForm1.Button1Click(Sender: Tobject);
var
x: String;
begin
x:= "abc" // 常量在第一次被赋值以后,值都不能再发生改变
Myproc(x);
end;
// 实现部分
procedure TFrom1.Myproce(var Str: String);
begin
Str: = 'HelloWorld'; // 这里再对一个常量进行赋值,编译器就会报错
ShowMessage(Str);
end;
Object Pascal Const 函数的定义
- 在Pascal中过程和函数是很相似的,主要的区别是函数有返回值 ,而过程没有返回值
- 定义的方法也有些不同,过程是 procedure 而函数是用 function
语法格式:
function 方法名 ([形参列表]) : 返回值类型;
var
// 局部声名
begin
// 语句
end;
// 声名
type
TMyClass = class
public
// 声明一个无参数、无返回值的方法
procedure MyMethod;
// 声明一个带参数、有返回值的方法
function MyFunction(param: Integer): String;
end;
// 实现
implementation
{ TMyClass }
// 实现 MyMethod 方法
procedure TMyClass.MyMethod;
begin
// 方法体
ShowMessage('Hello, this is MyMethod!');
end;
// 实现 MyFunction 方法
function TMyClass.MyFunction(param: Integer): String;
begin
// 方法体
Result := 'The parameter is ' + IntToStr(param);
end;
注:返回通过关键字
result
返回