[英]Delphi adding {$R *.res} in the .dpr file
Delphi有時會在.dpr文件中的單元路徑前面添加{$ R * .res}使用子句,然后在嘗試編譯時會收到重復的資源警告。
任何人都知道德爾福為什么這么做? 我正在使用Delphi 2009但這種情況發生在Delphi 2007之后(也可能是2006年)
這取決於你對.dpr文件做了什么。 Delphi期望文件以某種方式布局,如果您以內部IDE解析器無法正確查找某些內容的方式對其進行修改,則可能會猜錯。 最初,.dpr文件從未打算讓用戶隨意修改,因此它可能會混淆。 IFDEFS是最常見的罪魁禍首,可能會混淆IDE解析器。
也許發布你的.dpr有助於說明你的問題。 我的項目文件看起來像這樣,沒有問題:
program Example;
{$R *.res}
uses
Unit1 in 'Unit1.pas' {frmUnit1};
begin
Application.Initialize;
Application.CreateForm(TfrmUnit1, frmUnit1);
Application.Run;
end.
Delphi為您添加這些“錯誤的”{$ R}和{$ R * .res}文本的問題隱藏在DPROJ文件中。 只需使用文本編輯器打開DPROJ文件並搜索$ R * .res並刪除這些標記:
<DCCReference Include="..\..\..\Core\IF.Common\uTranslation.Types.pas">
<Form>$R *.res</Form>
</DCCReference>
改為
<DCCReference Include="..\..\..\Core\IF.Common\uTranslation.Types.pas"/>
現在,您不會在項目中獲得蹩腳的文本(直到下次IDE無法將此類內容添加到DPROJ文件中。
我已經獲得了一些“啟發式”來處理IDE與dpr混淆的事實:
Delphi將{$ R * .res}添加到.dpr文件,以將它生成的.res文件鏈接到您的應用程序中。 例如,如果將項目保存為MyProject.dpr,Delphi將創建一個文件MyProject.res,其中包含您在Delphi的Project Options中指定的應用程序圖標和版本信息。 如果沒有此.res文件,您的.exe將沒有圖標或版本信息。
如果您收到重復的資源警告,您的代碼中的其他地方可能還有另一個{$ R}編譯器指令,該指令也鏈接在MyProject.res中。 它可能是.dpr文件中的重復{$ R * .res},或另一個.pas文件中的{$ R MyProject.res}。 刪除其他編譯器指令而不是Delphi自動生成的指令,您的項目編譯就好了。
這是非常煩人的,沒有任何明顯的原因發生,不能防止發生 - 據我所知:(
.dpr中的默認{$ R * .res}應該在uses和var子句之間。
有時項目文件被破壞..
只刪除源目錄中除* .dpr,* .pas,* .dfm之外的任何文件
delphi將重建其他文件,包括* .res
而已
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.