0

有一个看起来像的程序

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不允许创建具有变量参数的程序???

4

1 回答 1

8

在您提供的代码示例中TVar1TVar2它们不是全局变量,而是局部参数。它们没有被标记为var参数,因此它们将收到传递给函数调用的任何参数值的副本,并且对这些局部变量所做的任何更改都不会传递回调用者。是否还有在别处命名TVar1TVar2声明的全局变量无关紧要,在此过程中,本地参数将优先。

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

Procedure TestProc(var TVar1, TVar2 : variant);
于 2012-07-02T16:28:56.627 回答