2013-02-05 65 views
2

我有一個枚舉'a'..'z'的全局數組變量。如果我想在變量聲明初始化一些項目,我平時做到以下幾點:如何在聲明中初始化delphi靜態數組的特定條目?

var 
    Example: Array['a'..'z'] of String = ('Example one', 'two', 'three'); 

有沒有一種方法來初始化只是,說,「G」,「P」,「O」,和'y',在變量聲明中,還是必須通過執行部分中的某個函數/過程來做到這一點?

可能還有更聰明的方法來實現我想要的嗎?

回答

6

您不能僅初始化某些元素。這樣做的正確方法是在initialization部分,寫在implementation之後:


implementation 
... 
initialization 
    Example['g'] := 'something'; 

end.
+1

這正是我需要的!我正在使用的愚蠢書沒有提及該部分......謝謝。 –

3

根本沒有辦法指定你只需要特定元素初始化。全局數組變量的初始化器只是一個元素列表。元素按順序指定。任何未指定的元素都設置爲默認值,您的情況爲''。由於列表按順序處理,因此未指定的元素必須是數組末尾的那些元素。

爲了做到這一點,您必須在代碼中編寫這些初始化。

var 
    Example: Array['a'..'z'] of String; // global variable 
.... 
// and later in code 
Example['a'] := ...; 
Example['b'] := ...; 
... etc. 

當然,你可以在代碼中選擇你喜歡的任何元素。

如果您希望將初始化作爲程序啓動時間執行,那麼您必須調用initialization section的初始化代碼。

+0

啊,好的。我認爲,自從'var'='','v','n','f'的數組[0..3]有效,可能有辦法挑出某些元素來初始化。 @Dejan也在下面提出了一個建議,我將嘗試。謝謝回覆! –

+0

啊!我懂了。這是一個全局變量!我會稍微更新一下。出於某種原因,我在考慮局部變量。 –