为什么 Delphi XE7 会更改每个 FMX 表单保存的 PNG 图像?

Han*_*ans 6 delphi png firemonkey delphi-xe7

我有一个包含许多自定义 firemonkey 组件的表单,其中每个组件都包含多个位图(从 PNG 图像文件加载)。每次保存表单时,FMX 文件中 PNG 图像的二进制数据都会发生变化!

这弄乱了我的版本控制日志 (SVN),因为仅更改表单中的一个属性会导致数千行更改。

有什么办法可以避免这种情况吗?

在此处查看 SVN 差异的屏幕截图:

SVN差异在这里

表单保存时,DotInlay.PNG图像没有被我更改,甚至包含图像的控件也没有任何更改。

编辑: 根据评论,这是 Delphi 中的一个错误,所以我创建了一个新的 QP 报告:https : //quality.embarcadero.com/browse/RSP-11259

如果您认为应该解决它,请为它投票。

Dav*_*nan 3

IDE 就是这样。将二进制资源放入 .dfm/.fmx 文件的危险之一。我不相信你能做任何事。只有 Embarcadero 可以更改他们的 IDE。

您需要对 .dfm/.fmx 文件和源代码控制执行的操作是仔细检查每次提交并恢复意外的更改。无论如何你都需要这样做,因为 IDE 确实有改变不应该改变的东西的习惯。即使对于非二进制资源也是如此。

不过,我的建议是不要将图像放入 .dfm/.fmx 文件中。将它们保留在资源中。这样您就可以将图像文件放入修订控制中,并将其作为资源链接到可执行文件。您需要在代码中做更多工作才能在运行时加载资源,但如果需要,您可以将其包装在辅助方法中,并且每个图像加载应减少为一行。

这种方法的真正好处是您可以更好地控制二进制资产的变更。

  • 谁知道。你可以尝试向内河码头请求改变,但我怀疑你在那里不会有太多运气。 (3认同)