2010-09-07 119 views
19

如何設置項目選項中的「目錄/條件」和環境選項中的「庫」路徑? Delphi幫助對這些非常重要的設置沒有多說。由於我的VCL之間的依賴關係錯誤,我有各種奇怪的錯誤。如何正確設置「目錄/條件」和「庫」路徑

1.

我曾在一個名爲ThirdPartyPackages_D7.dpk包合併一大套的第三方控件。這在我重新安裝Delphi時很有用,因爲我不必每次都重新安裝所有這些第三方VCL。

然後,我在MyControls_D7.dpk中擁有自己的控件,這取決於ThirdPartyPackages VCL。我也有另一個包依賴於MyControls的包BlgPackage.dpk。

在鏈的末尾是我的應用程序(DPR項目),它使用BlgPackage中的控件。

ThirdPartyPackages.dpk -> MyControls.dpk -> BlgPackage.dpk -> MyApplication.dpr 

當我改變/編輯東西,第二包(MyControls.dpk)和構建DPR應用程序,它的工作原理。編譯器會看到對該程序包所做的更改。 但是,如果關閉項目並加載並編譯BlgPackage,則會拋出一個令人討厭的消息,即在MyControls中找不到函數xyz,因爲我將其刪除(我已將MyControls的單元加載到IDE中,與應用程序單元並行)。似乎構建應用程序只刷新所有使用的軟件包的DCU文件,但不刷新DCP/BLP文件。

如何編寫和編譯軟件包中的代碼,而無需將軟件包顯式加載到IDE中並構建它們? (注:我有一個討厭的錯誤,不允許我在項目之間切換,而無需重啓IDE或在同一時間來加載一組項目/包(* .bpg)。)

2.

另一個問題是,我想將包的編譯文件(DCP/BPL/DCU)存儲在其文件夾中(例如c:\ MyProjects \ Blg)。
如果我將BlgPackage軟件包的「輸出目錄」,「單元輸出目錄」和「DCP輸出目錄」框設置到它的文件夾中,不僅其BPL/DCU/DCP文件將被存儲在那裏,而且BPL/DCP文件MyControls將存儲在那裏。 如何將每個軟件包的二進制文件放在單獨的文件夾中?


德爾福7,WIN XP,設置爲「重建需要」

回答

1

我的解決方案(有點髒,但嘿它的工作原理):

我把所有的第三方libraries.controls在單個封裝中(超級包)。我把所有的控件放在一個包裏。

現在,當我將軟件包遷移到不同的PC時,我所要做的就是複製/粘貼兩個文件夾並設置兩條路徑。

適用於我 - 其他人可能不同意,我不能責怪他們。我怪Borland/Embarcadero的'地獄設計師'。如果你看看StackOverflow,你會看到,直到現在還沒有人提供一個優雅的解決方案。

4
  1. 你應該明確地編譯軟件包的所有項目 - 只是編譯軟件包文件是不夠的,因爲你已經注意到導致問題。 在現代的Delphi版本中,您可以創建一個項目組(不確定是否包含Delphi 7),其中包含您想要與應用程序一起開發的應用程序和程序包,您可以輕鬆地在它們之間切換並且無需關閉/重新打開應用程序。

  2. BlgPackage不應該訪問MyControls包源(通過「Library」路徑或通過使用相同的目錄),它應該只訪問已編譯的MyControls包,否則每次構建BlgPackage時都會編譯MyControls中的文件和編譯的文件都存儲在BlgControls DCU目錄


ADDED

「庫」 路徑應導致編譯的文件(.dcp,.dcu)和(如果需要)資源文件(.res,.dfm) - 編譯需要「MyControls」包的應用程序和包就足夠了。您可以直接在程序包設置中爲編譯文件設置目錄,並且應該手動將資源文件(如果需要的話)複製到同一目錄中。該目錄應該包含在「庫」路徑中,否則你可以使用已經包含在「庫」路徑中的目錄。

如果您不希望每次構建BlgPackage或需要「MyControls」包的應用程序都要編譯這些文件,則「庫」路徑不應導致源文件(.pas)。

+0

@ Serg-我不認爲No2會起作用。Delphi 7的幫助如下所示:「如果您嘗試使用不在庫路徑上的文件構建包,則會收到編譯器錯誤。」所以,如果我從庫中刪除它的路徑,我將無法編譯我的軟件包。 – Ampere 2010-09-07 18:21:53

+0

我做到了,現在我無法編譯該項目。我找不到一個DCU。該DCU屬於MyControls。它位於MyControls PAS文件所在的相同文件夾中。 – Ampere 2010-09-08 09:19:55

+0

@Altar - 將.dcu存儲在與.pas相同的文件夾中是不好的做法,應該避免。 DCU應該通過「庫」路徑可用,而源(.pas)通常不是。 在任何情況下,如果出於某種原因,您不想在包選項中設置DCU路徑,則可以手動將導致問題的DCU複製到通過「庫」路徑可用的文件夾中。 – kludg 2010-09-08 14:11:01

3

我使用更簡單的方法來製作第三方零件並重新安裝Delphi。

  • 打開註冊表編輯器,找到 [HKEY_LOCAL_MACHINE/SOFTWARE/Borland公司/德爾福/ XXX]其中xxx爲版本和出口整體 分支。
  • 打開文件並刪除鍵LMKEY,LMLIC。
  • 複製C:\ Program Files文件\ Borland的\德爾福X \項目\櫛Bpl文件夾到另一個位置
  • 複製C:\ Program Files文件\ Borland的\德爾福X \進口到另一個位置
  • 重新安裝德爾福包括任何更新, GExpert
  • 導入以前保存的註冊表
  • 恢復櫛Bpl進口文件夾

而且whoala,德爾福又回來了所有3 partie組件和IDE設置。唯一的限制是所有組件在重新安裝Delphi之前和之後都必須位於同一文件夾中。

這也恢復了TeamSource設置。如果您還要重新安裝Windows,請務必使用與以前相同的用戶名製作Windows用戶。

+0

我正在使用這個'黑客'多年。不管怎麼說,還是要謝謝你。 +1,因爲其他人可能會使用它。 PS:不要忘記HKCU密鑰(相同位置:/ SOFTWARE/Borland/Delphi/xxx)。我想LMKEY是HKLM,但LMLIC是什麼? – Ampere 2010-09-09 09:15:48

+0

LMKEY和LMLIC是關於Delphi的許可證信息,如果你還原它們,那麼Delphi會認爲它沒有許可或類似的東西。 – 2010-09-09 09:36:40