外部からルーチンのローカル変数にアクセスする方法を教えてください。このような例えば
procedure TForm1.CalculateTax(var Amount: Double);
var
Tax : Double;
begin
Tax := Amount*2.5/100;
end;
外部からルーチンのローカル変数にアクセスする方法を教えてください。このような例えば
procedure TForm1.CalculateTax(var Amount: Double);
var
Tax : Double;
begin
Tax := Amount*2.5/100;
end;
宣言されているプロシージャの外部からローカル変数にアクセスすることはできません。
最善の解決策は、をに変更procedure
しfunction
、値を返すようにすることです。
TForm1
宣言を変更する
type
TForm1 = class(TForm)
...
procedure CalculateTax(var Amount: Double);
に
type
TForm1 = class(TForm)
...
function CalculateTax(const Amount: Double): Double;
から実装を変更します
procedure TForm1.CalculateTax(var Amount: Double);
var
Tax : Double;
begin
Tax := Amount*2.5/100;
end;
に
function TForm1.CalculateTax(const Amount: Double): Double;
begin
Result := Amount*2.5/100;
end;
次のように呼び出します。
Tax := CalculateTax(YourAmount);
私の $0.02:
1)これを「手順」ではなく「関数」にします(その目的は「値を返す」-税額であるため)
2) ルーチン内で「金額」または「税率」をハードコーディングしません。
3)変数「金額」を「オーバーロード」(複数の意味を与える)しません
// Better
function TForm1.CalculateTax(purchaseAmount, taxRate: Currency) : Currency;
begin
Result := purchaseAmount * (taxRate / 100.0);
end;