参数传递方式演示

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.

 

posted @ 2011-12-07 08:17  endsnow  阅读(143)  评论(0)    收藏  举报