unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure swapbyvalue(v1,v2: real; const v3: real; var sum: real);
//v1,v2值传递,v3为不可更改的值传递,sum为地址传递
var
tmp: real;
begin
sum := v1 +v2 +v3; //计算和
tmp := v1; //交换v1,v2的值
v1 := v2;
v2 := tmp;
end;
procedure swapbyaddr(var v1,v2: real; const v3: real; out sum: real);
//v1,v2为地址传递,v3为不可更改的值传递,由OUT修饰的变量称为“外部参数”
var
tmp: real;
begin
sum := v1 +v2 + v3; //计算和
tmp := v1; //交换v1,v2的值
v1 := v2;
v2 := tmp;
end;
procedure TForm1.Button1Click(Sender: TObject); //值传递按钮单击事件
var
ed1,ed2,sum: real;
begin
sum := 100;
ed1 := strtofloat(edit1.Text);
ed2 := strtofloat(edit2.Text);
swapbyvalue(ed1,ed2,9.9,sum); //按值传递调用计算过程
edit1.Text := floattostr(ed1); //显示改变后的值
edit2.Text := floattostr(ed2);
edit3.Text := floattostr(sum);
end;
procedure TForm1.Button2Click(Sender: TObject); //地址传递按钮单击事件
var
ed1,ed2,sum: real;
cstv: integer;
begin
ed1 := strtofloat(edit1.Text);
ed2 := strtofloat(edit2.Text);
cstv := 100;
swapbyaddr(ed1,ed2,cstv,sum); //按地址传递调用计算过程
edit1.Text := floattostr(ed1); //显示改变后的值
edit2.Text := floattostr(ed2);
edit3.Text := floattostr(sum); //显示计算结果
end;
procedure TForm1.FormCreate(Sender: TObject); //窗体创建事件
begin
edit1.Text := '6.6'; //给定第一个参数的值
edit2.Text := '8.8'; //给定第二个参数的值
edit3.Text := '0.0';
end;
end.
