测试代码如下,为什么两个返回值一个是6,一个是12?unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
edt1: TEdit;
btn1: TButton;
edt2: TEdit;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure Myproc1(var x:Integer);
begin
x:=x*2;
end;procedure Myproc2(x:Integer);
begin
x:=x*2;
end;procedure TForm1.btn1Click(Sender: TObject);
var
i:Integer;
begin
i:=6;
Myproc1(i);
edt1.Text:=IntToStr(i); //显示为 12 i:=6;
Myproc2(i);
edt2.Text:=IntToStr(i); //显示为 6
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
edt1: TEdit;
btn1: TButton;
edt2: TEdit;
procedure btn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure Myproc1(var x:Integer);
begin
x:=x*2;
end;procedure Myproc2(x:Integer);
begin
x:=x*2;
end;procedure TForm1.btn1Click(Sender: TObject);
var
i:Integer;
begin
i:=6;
Myproc1(i);
edt1.Text:=IntToStr(i); //显示为 12 i:=6;
Myproc2(i);
edt2.Text:=IntToStr(i); //显示为 6
end;end.
比方 你的姓名是你,var用的是你的小名, 和你完全一样
procedure TForm1.Button1Click(Sender: TObject);
var
i:Integer;
begin
i:=6;
Myproc1(i); //这里对变量i的值进行了修改,变参i传入后,经过计算了
Edit1.Text:=IntToStr(i); //显示为 12
i:=6;
Myproc2(i); //这里并未对i进行修改,所以i:=6
Edit2.Text:=IntToStr(i); //显示为 6
end;