Delphi在.dpr文件中添加{$ R*.res}

Fab*_*mes 11 delphi

Delphi有时会在.dpr文件中的单元路径前面添加{$ R*.res}使用子句,然后在尝试编译时会收到重复的资源警告.

任何人都知道德尔福为什么这么做?我正在使用Delphi 2009但这种情况发生在Delphi 2007之后(也可能是2006年)

All*_*uer 8

这取决于你对.dpr文件做了什么.Delphi期望以某种方式布置文件,如果您以内部IDE解析器无法正确查找某些内容的方式对其进行修改,则可能会猜错.最初,.dpr文件从未打算让用户随意修改,因此它可能会混淆.IFDEFS是最常见的罪魁祸首,可能会混淆IDE解析器.


Sco*_*t W 6

也许发布你的.dpr有助于说明你的问题.我的项目文件看起来像这样,没有问题:

program Example;

{$R *.res}

uses
  Unit1 in 'Unit1.pas' {frmUnit1};

begin
  Application.Initialize;
  Application.CreateForm(TfrmUnit1, frmUnit1);
  Application.Run;
end.
Run Code Online (Sandbox Code Playgroud)


Z.B*_*.B. 6

为什么Delphi向您添加这些“错误的” {$ R}和{$ R * .res}文本的问题隐藏在DPROJ文件中。只需使用文本编辑器打开DPROJ文件并搜索$ R * .res并删除以下标签:

<DCCReference Include="..\..\..\Core\IF.Common\uTranslation.Types.pas">
  <Form>$R *.res</Form>
</DCCReference>
Run Code Online (Sandbox Code Playgroud)

更改为

<DCCReference Include="..\..\..\Core\IF.Common\uTranslation.Types.pas"/>
Run Code Online (Sandbox Code Playgroud)

现在,您将不会在项目中得到get脚的文本(直到下次IDE无法将此类内容添加到DPROJ文件中时为止)。


Jan*_*rts 5

Delphi 将 {$R *.res} 添加到您的 .dpr 文件以将其生成的 .res 文件链接到您的应用程序中。例如,如果您将项目保存为 MyProject.dpr,Delphi 将创建一个文件 MyProject.res,其中包含您在 Delphi 的项目选项中指定的应用程序图标和版本信息。如果没有这个 .res 文件,您的 .exe 将没有图标或版本信息。

如果您收到重复资源警告,则您的代码中其他地方可能还有另一个 {$R} 编译器指令,该指令也链接到 MyProject.res。它可能是 .dpr 文件中的重复 {$R *.res},或另一个 .pas 文件中的 {$R MyProject.res}。删除另一个编译器指令而不是 Delphi 自动生成的那个,您的项目将编译得很好。