簡體   English   中英

組件TSomething無法通過包something_design.bpl注冊,因為它已經被包stuff_design.bpl注冊。

[英]Component TSomething can't be registered by package something_design.bpl because it has already been registered by package something_design.bpl.?

Delphi中設計時包的一個可怕錯誤,這意味着在Palette中注冊安裝新組件的包是這個錯誤:

組件TSomething無法通過包something_design.bpl注冊,因為它已經被包stuff_design.bpl注冊。

我已經知道了這么多:

  1. 如果您有兩個BPL副本並且您加載了一個,但另一個依賴於BPL的包嘗試加載另一個,並且它嘗試加載第二個副本,則會出現此錯誤。

  2. 有時候,有一些關於隱式導入的奇怪的事情要求你修復隱式導入警告,清理所有工件(dcu,dcp等)並重試,這就消失了。

但是,如果以上情況正在解決問題,您如何解決問題?

在我看來,我的硬盤驅動器上只有這個BPL的一個副本,並且路徑指向它,並且不知何故,在IDE可以看到它之前,軟件包正在對軟件包進行“隱形”后台加載,然后IDE本身嘗試加載一個包,該包已經使用Win32調用LoadLibrary加載到IDE的內存中,第二個加載是嘗試加載此包的IDE,導致失敗。

我在找:

A.如何找出問題所在,以及如何解決問題。

B.避免這種情況的方法(用於掃描軟件包或delphi IDE配置的防御性實踐或工具。)

C.解決方法。 例如,我發現與推出德爾福IDE(bds.exe) -np參數,然后加載我的項目后,沒有初始IDE啟動時,有時通過延遲項目/表的工作方式解決該問題將打開,直至以后的時間,當Delphi IDE看起來更穩定時。

首先,你在XE工作嗎? 在我今年早些時候制作一個替換日歷的組件后,我一直在努力解決這個問題。 我仍然不確定是什么修復它。 但我相信錯誤與路徑有關。 通過對2個路徑定義可見,確保它不包含兩次。

如果正在使用它,您應該能夠看到包含哪些包。

希望你能理解這一點,我仍然想知道我當時做了什么。

所有其他方面都是正確的(路徑,副本數等)...當我的IDE包依賴於已經安裝到IDE中的其他(第三方)軟件包時,我遇到了這個問題。 KEY是為了加載其他包,這樣當你構建包時,它會識別正確的“Requires”並啟動對話框,讓你同意添加它。 您可以通過在項目管理器中的包中添加一個空的新項目並將一些第三方控件放到表單上來加載其他包。 現在,當您編譯包時,它應該看到另一個包並將其包含在Requires列表中。

我想你可以將ForceDemandLoadState(dlDisable)添加到第三方包中,但是誰想要?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM