有一个看起来像
的程序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不允许创建具有变量参数的过程???
答案 0 :(得分:8)
在您提供的代码示例中,TVar1
和TVar2
是不是全局变量,它们是本地参数。它们未标记为var
参数,因此它们将接收传递给函数调用的任何参数值的副本,并且对这些局部变量所做的任何更改都不会传递回调用方。如果在其他地方声明了名为TVar1
和TVar2
的全局变量,则无关紧要,在此过程中,本地参数将优先。
如果要将修改传递回调用者,请将参数声明为var
个参数。
Procedure TestProc(var TVar1, TVar2 : variant);