访问Delphi Routine局部变量

时间:2012-05-31 17:31:13

标签: delphi

如何从外部访问例程的局部变量。像这样的一个例如

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

2 个答案:

答案 0 :(得分:6)

您无法从声明的过程外部访问本地变量。

最佳解决方案是将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);

答案 1 :(得分:0)

我的0.02美元:

1)我会把它变成“功能”而不是“程序”(因为它的目的是“返回一个值” - 税额)

2)我不会硬编码例程中的“金额”或“税率”

3)我不会“超载”(赋予多个含义)变量“amount”

// Better
function TForm1.CalculateTax(purchaseAmount, taxRate: Currency) : Currency;
begin
  Result := purchaseAmount * (taxRate / 100.0);
end;