我得到了与下面的错误非常类似的错误:
How can I fix this delphi 7 compile error - "Duplicate resource(s)"
然而,我得到的错误是:
[Error] WARNING. Duplicate resource(s):
[Error] Type 10 (RCDATA), ID TFMMAINTQUOTE:
[Error] File P:\[PATH SNIPPED]\Manufacturing.RES resource kept; file FMaintQuote.DFM resource discarded.
Manufacturing.res是默认资源文件(应用程序称为Manufacturing.exe),FMainQuote是其中一种形式。 .dfm文件是纯文本文件,所以我不确定哪些资源是重复的,如何查找并修复它?
如果我再次尝试编译项目,它可以正常工作,但exe的图标与我在“项目选项”中使用“加载图标”按钮设置的图标不同。应用程序上的图标是某种我无法识别的铃声图像。
答案 0 :(得分:6)
尝试寻找额外的{$ R * .res}或{$ R * .dfm},您可能已从某处复制过。
答案 1 :(得分:5)
Delphi将所有DFM文件转换为资源,并将其命名为类的名称。您可以使用资源编辑器并打开任何基于表单的Delphi应用程序来验证这一点。
在所有单位中搜索TFMMAINTQUOTE表单的实例。它最有可能是两个单元,其中一个没有链接到你的项目,但是通过引用错误单元的uses子句被拉入(错误,因为它以不同的名称保存但具有相同的表单名称,如果它是您项目的一部分,然后编译器会在您首先添加单元时抱怨。
此问题的简单解决方案是在项目中找到TFMMAINTQUOTE表单并将表单重命名为其他表单,但旧的TFMMAINTQUOTE仍然会被拉入。
我建议使用一个好的目录grep工具,例如GExperts中的工具来进行搜索。它可以节省很多时间,如果需要,可以设置为搜索整个硬盘。 GExperts的优势在于它可以免费直接集成到Delphi IDE中。
答案 2 :(得分:2)
尝试重命名制造,重新命名为Manufacturing.bak或其他东西。 Delphi应该重新创建res文件。
您当然需要在新文件的res文件中重新创建任何引用,字符串等,但无论如何都值得尝试......
答案 3 :(得分:1)
我得到了同样的错误。我认为影响因素是:
解决方案:重命名表单(在项目中包含错误消息)
答案 4 :(得分:1)
当我尝试将DBISAM数据库组件重新安装到调色板时,这种“警告。重复资源:文件资源保留资源被丢弃”最近出现在Delphi 7中。
File D:\DELPHI\DBISAM\db324d6d.res resource kept; file
D:\DELPHI\DBISAM\db324d6d.res resource discarded.
Type 14 (ICON GROUP), ID MAINICON:
正如您在上面所看到的,当正好与 RES相关的Delphi错误情况出现时,同一资源有两个相同的通知,在这里“D:\ DELPHI \ DBISAM \ db324d6d.res“文件。
我首先想到来自两个供应商软件包的资源存在冲突,所以我撕掉并撕掉了其他已安装的组件。经过4个小时左右的努力奋斗,我终于发现DBISAM DPK包文件中出现了另一个资源引用:
package db324d6d;
{$R *.res}
{$R 'db324d6d.res'}
...
现在我记得DBIsam大约一周前左右抱怨过“缺少.RES资源文件”。我经常检查,并确保该行存在于DPK文件中,并且RES文件位于磁盘上。 那时我可能已经以某种方式将第二行添加到DPK文件中,但是已经构建了Package,并且我整个星期都能够使用它。
现在额外的线回击了,并且很难击中它。我只是喜欢周六4小时的挣扎。
很快,如何修复它:删除后者的那些资源行。当它们都指向同一资源时出现错误。
所以,只剩下这个:
package db324d6d;
{$R *.res}
...
Phew,我希望这能帮助别人。
答案 5 :(得分:0)
额外的{$R *.res}
在* .dpr文件中,如下所示:
program Test;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Sample in 'Sample.pas',
Proc in 'Proc.pas';
{$R *.res} //<----delete this if you put them in the Unt1.pas. ok.
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
答案 6 :(得分:0)
如果您重命名一个from,并且在其他单位的使用部分中引用了此表单,则会出现上述错误。
解决方案是以上的混合物。
(1)更改以.bak结尾的资源文件(以便稍后重新创建)。 (2)搜索所有单元并将旧单元/表单名称的引用更改为新单元。 (3)重新编译,现在可以了。
答案 7 :(得分:0)
编辑RES文件并从中删除重复的资源。这样您就可以保留原始图标。