0

外部からルーチンのローカル変数にアクセスする方法を教えてください。このような例えば

procedure TForm1.CalculateTax(var Amount: Double);
var 
  Tax : Double;
begin
  Tax := Amount*2.5/100;
end;
4

2 に答える 2

6

宣言されているプロシージャの外部からローカル変数にアクセスすることはできません。

最善の解決策は、をに変更procedurefunction、値を返すようにすることです。

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);
于 2012-05-31T18:12:01.277 に答える
0

私の $0.02:

1)これを「手順」ではなく「関数」にします(その目的は「値を返す」-税額であるため)

2) ルーチン内で「金額」または「税率」をハードコーディングしません。

3)変数「金額」を「オーバーロード」(複数の意味を与える)しません

// Better
function TForm1.CalculateTax(purchaseAmount, taxRate: Currency) : Currency;
begin
  Result := purchaseAmount * (taxRate / 100.0);
end;
于 2012-05-31T18:23:27.100 に答える