我的应用程序图标已损坏(编译器中出现问题?)

时间:2008-12-09 00:35:27

标签: delphi icons

我的应用程序的“应用程序图标”是错误的。

我的应用程序在任务栏中显示的图标与经典的Delphi图标不同。而是显示我的一个VCL的图标。图标被“窃取”的特定VCL未在我的应用程序中使用,但使用了同一包中的其他VCL。

相关信息:   - 如果我将我的应用程序拖放到桌面上,图标看起来没问题。   - 当我将光标放在Windows Commander上时,图标看起来没问题。   - 当我将其拖放到“按钮栏”中时,Windows Commander中的图标看起来不正常。结论:图标在运行时不会被意外更改(即使应用程序没有运行,问题仍然存在)。

我使用Delphi 7.我只是为了确保禁用了EurekaLog和FastMM,并重建了应用程序。问题仍然存在。我甚至没有丝毫为什么编译器插入错误的图标。 我真的需要一些提示。 感谢。

6 个答案:

答案 0 :(得分:8)

IDE中配置的图标将插入项目的 RES 文件中,名称为 MAINICON 。如果 DPR 文件中有{$R *.RES}行,则项目资源文件将由编译器链接到您的应用程序。

资源管理器为 EXE 文件显示的图标是应用程序中的第一个图标。图标或按字母顺序排序。如果资源管理器显示错误的图标,则可能是您已将其他图标链接到您的应用程序,其中一个图标的名称位于 MAINICON 之前。它可能有一个数字名称。 (我不知道Windows Commander如何决定显示什么图标。)

如果项目使用的某个组件或其他单元具有与$R指令链接的资源文件,那么它将包含在您的项目中。您不必对图标进行任何特定引用,甚至在代码中的任何位置提及组件的类名。仅在已使用的单元中存在$R指令就足以将整个资源文件链接在一起。编译器不会执行任何“智能链接”来删除未使用的资源,因为它无法检测资源使用情况在编译时。

常见问题是资源管理器显示错误的图标,但程序本身使用正确的图标。通过在 MAINICON 之后重命名“错误”图标来解决这个问题。但是你说你的程序表现相反:资源管理器(桌面)显示正确的图标,你的程序使用错误的图标,对吗?

一种可能性是 DPR 文件中的$R指令丢失或错误。 Delphi可能正在链接旧版本的文件。尝试删除项目的 RES 文件。当IDE看到它丢失时,它将重新创建它。此时,重新配置项目选项中的图标。您可能还需要重置项目的版本号。

您还应该检查已编译程序中资源的布局。我不记得Delphi是否附带了适合该任务的资源查看器。您可以尝试PE Resource Explorer。需要考虑的事项:项目中所有图标的名称是什么?出现什么图标,名称为 MAINICON ?什么 RES 文件来自其他图标,以及哪个单元将其链接?

最后,关于术语的说明: VCL 是Visual Component Library,它是Delphi附带的一组组件。你不能拥有“一个”VCL。你安装到Tool Palette(nee Component Palette)并放在表单和数据模块上的东西是组件,而不是VCL。

答案 1 :(得分:5)

Delphi 的菜单栏中选择项目 - >选项

在项目选项中,选择应用

在那里,您会看到为您的应用选择了图标。

你可以在那里改变它。

答案 2 :(得分:1)

可执行文件可以嵌入不同大小的图标。

检查以确保您已为不同尺寸定义了图标。如果您没有定义所有尺寸,Delphi可能会随意拉一个。这可以解释为什么按钮栏看起来单向,而在桌面上它看起来是另一种。

答案 3 :(得分:1)

重命名.RES文件并强制重新编译对我来说很好。

有两种方法可以做到。

将项目图标重置为默认值:

  1. 关闭delphi。
  2. 在文件资源管理器中打开项目文件夹。
  3. 将文件扩展名从.RES文件重命名为.RES.BAK(您可能需要取消选中文件资源管理器工具中的“隐藏已知文件类型的文件扩展名”>文件夹选项>查看>高级设置>文件和文件夹部分。
  4. 在delphi中打开项目。
  5. 它会显示一条警告,说它没有找到RES文件并会重新创建它。
  6. 确保使用新图标并使用最少的内存进行分配(因此,由于应用程序图标中先前的重复更改,因此不会为此处指定的图标分配其他未使用的图标):

    1. 在delphi中打开项目。
    2. 打开项目选项(Ctrl + Shift + F11)。
    3. 转到应用程序标签。
    4. 点击加载图标。
    5. 选择所需的图标,然后单击“打开”,然后单击“确定”。
    6. 在文件资源管理器中打开项目文件夹。
    7. 将文件扩展名从.RES文件重命名为.RES.BAK(您可能需要取消选中文件资源管理器工具中的“隐藏已知文件类型的文件扩展名”>文件夹选项>查看>高级设置>文件和文件夹部分。
    8. 在delphi中转到Project>编译所有项目。然后转到项目>构建所有项目。
    9. 当您退出Delphi时,它会询问您是否要将更改保存到项目中。单击是。
    10. 希望你觉得这很有用。

答案 4 :(得分:0)

检查应用程序的语言ID和OS的默认语言。如果这些不匹配,那么您可能会遇到图标问题。

答案 5 :(得分:0)

你在多台机器上检查过这个吗? Windows因图标缓存问题而臭名昭着。