2012-07-02 104 views
0

有它看起來的過程像德爾福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不允許創建具有變體參數的過程???

+3

請注意,'T'前綴用於表示類型而不是變量。你的變量應該被命名爲'Var1'和'Var2'。也就是說,我會稱它們爲「ExcelApp」和「Worksheet」,因爲這樣可以讓您更容易理解代碼的含義。 –

回答

8

在您提供的代碼示例中,TVar1TVar2而不是全局變量,它們是本地參數。它們沒有標記爲var params,因此它們將收到傳入函數調用的任何參數值的副本,並且對這些局部變量所做的任何更改都不會傳回調用方。如果在其他地方聲明瞭名爲TVar1TVar2的全局變量,則無關緊要,在此過程中,本地參數將優先。

如果您想要將修改返回給調用者,請聲明參數爲var參數。

Procedure TestProc(var TVar1, TVar2 : variant); 
+0

通過引用傳遞變量實際上是我需要做的,感謝您的所有輸入 – KE50