Delphi 7具有变量参数的过程

时间:2012-07-02 14:12:39

标签: delphi delphi-7

有一个看起来像

的程序
Procedure TestProc(TVar1, TVar2 : variant);
Begin
  TVar1 := CreateOleObject('Excel.Application');
  TVar1.Workbooks.open('C:\Test\Test.xls');
  TVar1.Workbooks[1].Worksheets[1].Name := 'Sheet_1';
  TVar2 := TVar1.Workbooks[1].Worksheets['Sheet_1'];
End;

注意:TVar1和TVar2是全局变量

在按钮的onclick事件中调用该过程,然后使用创建的对象无法正常工作

是否delphi不允许创建具有变量参数的过程???

1 个答案:

答案 0 :(得分:8)

在您提供的代码示例中,TVar1TVar2不是全局变量,它们是本地参数。它们未标记为var参数,因此它们将接收传递给函数调用的任何参数值的副本,并且对这些局部变量所做的任何更改都不会传递回调用方。如果在其他地方声明了名为TVar1TVar2的全局变量,则无关紧要,在此过程中,本地参数将优先。

如果要将修改传递回调用者,请将参数声明为var个参数。

Procedure TestProc(var TVar1, TVar2 : variant);