为什么Delphi XE7会在每个FMX表单上更改PNG图像?

为什么Delphi XE7会在每个FMX表单上更改PNG图像?,第1张

概述我有一个包含许多自定义firemonkey组件的表单,其中每个组件包含多个位图(从PNG图像文件加载).每次保存表单时,PNG图像的二进制数据都会在FMX文件中发生变化! 这会弄乱我的版本控制日志(SVN),因为更改表单中的一个属性会导致数千个更改的行. 有什么方法可以避免这种情况吗? 请参阅SVN diff的屏幕截图: 保存表单时,我没有更改DotInlay.PNG图像,甚至包含图像的控件也没有 我有一个包含许多自定义firemonkey组件的表单,其中每个组件包含多个位图(从PNG图像文件加载).每次保存表单时,PNG图像的二进制数据都会在FMX文件中发生变化!

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

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

请参阅SVN diff的屏幕截图:

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

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

如果您发现它应该被解决,请投票给它.

解决方法 IDE就是这样.将二进制资源放入.dfm / .fmx文件的危险之一.我不相信你有什么可以做的.只有Embarcadero可以更改他们的IDE.

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

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

这种方法的真正好处是您可以对二进制资产进行更好的更改控制.

总结

以上是内存溢出为你收集整理的为什么Delphi XE7会在每个FMX表单上更改PNG图像?全部内容,希望文章能够帮你解决为什么Delphi XE7会在每个FMX表单上更改PNG图像?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1234148.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存