手続きや関数では、パラメータを渡して処理をすることがあります。
呼び出す側で指定するパラメータを実引数、呼ばれる側のパラメータを仮引数と言います。
※実引数と仮引数の変数名は同じでなくてもよい
intMenseki := Menseki_keisan(intTate,intYoko); //赤い文字は実引数(呼び出す側) Edit3.Text := IntTOStr(intMenseki); end; function Menseki_keisan(intTate, intYoko : Integer) : Integer; //青い部分は仮引数(呼び出される側) begin Menseki_keisan := intYoko * intTate; end;
- Delphiのパラメータには、値パラメータ、変数パラメータ、定数パラメータの3種類があります。
- 値パラメータは、ローカルパラメータなので、仮引数で変更した内容は実引数に影響を与えません。
procedure TForm1.Button1Click(Sender: TObject);//ボタンクリック var intA,intB : Integer; begin intA := 10; //値を代入 intB := 20; Tashizan(intA,intB); //手続きの呼び出し、値10と20を渡す。 end; procedure Tashizan(intA,intB:Integer);//手続き (仮引数) begin Form1.Edit3.Text := IntToStr(intA + intB);//引き渡された値で計算 end;
- 変数パラメータは、仮引数で変更した内容は実引数に影響します。
引数を変数パラメータとして渡すには、呼ばれる側の手続き(関数)で、仮引数の前に予約語varを記述します。
実引数の初期値には、仮引数の値が使われます。【サンプル】
procedure Tashizan(var intA,intB :Integer); //手続き (仮引数) begin intA := intA * 2; //仮引数(値を変更) intB := intB * 2; //仮引数(値を変更) end; procedure TForm1.FormCreate(Sender: TObject); var A,B : Integer; begin A := 10; //実引数 B := 20; //実引数 Form1.Edit1.Text := IntToStr(A); Form1.Edit2.Text := IntToStr(B); Tashizan(A,B); //手続きの呼び出し、値10と20を渡す。 Form1.Edit3.Text := IntToStr(A + B); // 結果を表示 end;