2009-04-24 31 views
8

我使用的是帶有所有修補程序和更新的Delphi 2007。*有時*在Delphi中指定常量時出現錯誤

我有一個是由兩個不同的項目文件。在該文件是一個過程,我將簡化如下:

procedure MyProcedure; 
const 
    UniqueValue: integer = 0; 
begin 
    //some code 
    Inc(UniqueValue); 
    //some more code 
end; 

的公司()命令失敗,因爲你不能分配給一個常數。在一個項目中,我得到了一個錯誤(我將這個項目稱爲「準確」)。在另一個項目中,我沒有遇到任何錯誤(我將其稱爲「Bogus」)。我也沒有得到任何警告。我無法弄清楚爲什麼編譯器讓這個不正確的代碼通過。

這是我在項目仿冒者已經嘗​​試:

1 - 介紹了一個明顯的錯誤,就像在一個行的中間鍵入「slkdjflskdjf」

結果:我得到一個錯誤,這證明它真的試圖編譯這個文件。

2 - 刪除.DCU,並重建項目

結果:.DCU重新生成,再次證明該項目是真正的編譯這種錯誤代碼。

有沒有人對爲什麼會發生這種行爲的看法?更具體地說,爲什麼它會發生在一個項目中,而不是另一個項目中?是否有一些不明確的編譯器選項允許分配給常量?

最後一點:這兩個項目都距離Delphi 5.轉換Delphi下5與類似的代碼,它們都編譯細。

編輯:感謝您的幫助。更改可分配的類型常量指令後,我可以在兩個項目中獲得一致的行爲。我學到了今天新...

回答

13

編譯器選項中有一個稱爲「Assignable typed constants」的選項。它也可以在代碼中使用「{$ J +}」啓用。

5

難道說這些項目在$ J編譯指令中的設置有什麼不同?

3

正如其他人說這是幾乎可以肯定的{$J+}指令。

如果你有一個diff工具,你可以比較項目文件,看看他們有什麼不同 - 他們只是文本文件 - 在未來解決類似的問題。

3

我建議檢查項目選項,部分編譯器,看看你是否可以發現任何差異。也許你有選項可僞裝的類型常量在虛假項目中啓用。

相關問題