(1)var修飾符orm
添加var 是地址傳遞,會修改原有的變量string
var編譯
s: string;變量
begin方法
S := 'Hello';co
ChangeSVar(s);參數
ShowMessage(S);const
end;
// ChangeSVar 定義
procedure TForm1.ChangeSVar(var A: string);
begin
A := A + 'World';
end;
以上會輸出Hello World,由於是傳址,修改的是原來的A
(2)無任何修飾符
var
s: string;
begin
S := 'Hello';
ChangeS(s);
ShowMessage(S);
end;
// ChangeS定義
procedure TForm1.ChangeS(A: string);
begin
A := A + 'World';
end;
以上會輸出Hello,由於方法ChangeS實際上是建立了一個新的A,而輸出的仍是原來的A,值並無改變
(3)out修飾符
var
s: string;
begin
S := 'Hello';
ChangeSOut(s);// 此時S的值是'Hello,'而非'Hello,World'!,在過程Hello中的S的原始值被丟棄了
ShowMessage(S);
end;
// ChangeSOut定義
procedure TForm1.ChangeSOut(out A: string);
begin
A := A + 'World';
end;
以上會輸出World,out僅僅接受返回的值,對out的任何輸入都會被忽略。同時out傳遞給過程的實際參數沒必要進行初始化,好比對ChangeSOut的調用:
Var
Tmp: string;
Begin
ChangeSOut(Tmp);//編譯也能夠經過
End;
(4)Const修飾符
Const修飾的參數傳入以後不容許修改
若是在過程當中修改參數會報錯,好比:
Procedure xxxx.TestConst(const A: String);
Begin
A := ’ss’; //企圖修改const修改的參數,會報錯
End;