2010-03-10 81 views
7

我工作的大多數單元都依賴於數據模塊。我遇到的最煩人的事情之一是一個錯誤消息告訴我爲什麼在另一個模塊被加載之前模塊將不可用?

模塊X引用另一個模塊,並且直到加載模塊Y後才能保存。

現在,我敢肯定有一個很好的理由,爲什麼CheckNoFixups試圖WriteRootStream提出了這個錯誤,並不能拯救什麼實際上是一個文本文件(希望這不跟Catastrophic Failure哪裏然後,我必須重新啓動IDE,同時仍然無法保存我的工作。)但是有什麼好理由?

爲什麼我不能像其他單位一樣打開包含各種功能和對象的無齒文本文件來單擊保存? DataModule有什麼特別之處,這意味着我無法保存正在處理的源代碼,直到它打開爲止,爲什麼使用子句中的其他45個單元不是那麼重要,它們必須是開放的?

編輯: 這是2007年

德爾福DataModule中的宣言是:

unit DataMD; 

TRepDataMod = class(TDataModule) 
... 
var 
    RepDataMod: TRepDataMod; 

回答

1

如果DataModule中是不打開的項目的一部分,數據表單中的感知對象引用的DataModule,無法驗證他們的參考,因此我認爲這個消息出現了。

我只在將舊項目移植到新的Delphi版本或正在遷移到一組新的數據庫組件時纔看到此消息。在正常情況下我沒有遇到這個消息。

在早期版本中,我沒有看到該消息,表單/單元可以保存,但dfm中的引用被幻想刪除。

+0

聽起來有趣,我已經看到了與舊項目相同的問題(消除引用),你如何解決它? – Harriv

+1

@Harriv:我發現的唯一方法是在代碼中而不是在設計時分配這些引用。那總是有效的,其他的都沒有。如果您使用某個源代碼控制,則應始終在提交之前檢查dfm文件的差異,以便至少在問題發生時可以發現問題,並可通過將丟失的線路從早期版本的文件複製回來,從而輕鬆修復問題。不是理想的解決方案... – dummzeuch

1

我有同樣的問題(德爾福7)。

我在數據模塊上有一個imagelist,以供整個應用程序使用。發生編譯,如果有語法錯誤。 IDE打開(pas)文件,我可以更正錯誤。

但試圖保存文件顯示消息(「模塊'XXX'鏈接到模塊'YYY',這在當前項目中找不到,你是否希望刪除/重定向鏈接到另一個模塊?」)。 XXX是文件本身,YYY是數據模塊。項目中包含的數據模塊,並回答該問題的「是」將刪除dfm文件中的所有鏈接。

所以唯一的解決辦法是按「否」,基本上保存pas文件並關閉文件 - 這次按「否」的問題,如果該文件應該保存(該pas實際上已經保存)。

我已經嘗試了各種解決方法,但仍在掙扎。

0

模塊X引用另一個模塊,直到模塊Y加載後才能保存。

查看「Y」條目的X.dfm(X.fmx)。如何處理他們,這是你的選擇。

0

確保DataModule是該項目的一部分。僅僅包含在搜索路徑中或手動輸入dpr文件是不夠的。通過IDE並將DataModule添加到項目中。

還要確保DataModule dfm-resource與本機具有相同的名稱。