我有一个包含许多自定义firemonkey组件的表单,其中每个组件都包含多个位图(从PNG图像文件加载)。每次保存表单时,PNG图像的二进制数据都会在FMX文件中发生变化!
这会弄乱我的版本控制日志(SVN),因为只更改表单中的一个属性会导致数千个更改的行。
有什么方法可以避免这种情况吗?
请参阅SVN diff的屏幕截图::
保存表单后,我没有更改DotInlay.PNG图像,甚至包含图像的控件也没有任何更改。
修改 从评论中,这是Delphi中的一个错误,因此我创建了一个新的QP报告: https://quality.embarcadero.com/browse/RSP-11259
如果您发现它应该被解决,请投票。
答案 0 :(得分:1)
IDE就是这样。将二进制资源放入.dfm / .fmx文件的危险之一。我不相信你有什么可以做的。只有Embarcadero可以更改他们的IDE。
与.dfm / .fmx文件和源代码控制有关的是仔细检查每个提交并恢复意外更改。无论如何都需要这样做,因为IDE确实习惯于改变不应该改变的东西。即使是非二进制资源。
我的建议是,您不要将图像放在.dfm / .fmx文件中。把它们留在资源中。这样,您可以将图像文件放入版本控制中,并将其作为资源链接到可执行文件。您需要在代码中执行更多工作以在运行时加载资源,但是如果需要,可以将其包装在辅助方法中,并且每个图像加载应该减少到一行。
这种方法的真正好处是可以对二进制资产实施更好的变更控制。