如何从外部访问例程的局部变量。像这样的一个例如
procedure TForm1.CalculateTax(var Amount: Double);
var
Tax : Double;
begin
Tax := Amount*2.5/100;
end;
答案 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;