0

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

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

2 回答 2

6

您不能从声明它的过程之外访问局部变量。

最好的解决方案是将您的更改procedure为 a 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);
于 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 回答