gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:38:50 24 4
gpt4 key购买 nike

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

我的应用程序在任务栏中显示的图标与经典的 Delphi 图标不同。相反,它显示了我的 VCL 之一的图标。我的应用程序中没有使用图标被“窃取”的特定 VCL,但使用了同一包中的其他 VCL。

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

我使用 Delphi 7。为了确定起见,我禁用了 EurekaLog 和 FastMM,并重建了应用程序。问题仍然存在。我什至不知道为什么编译器会插入错误的图标。我真的需要一些提示。谢谢。

最佳答案

在 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。

关于delphi - 我的应用程序图标已损坏(编译器出现问题?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/351443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com