2015-06-03 64 views
3

我有一個窗體與許多自定義firemonkey組件,其中每個包含多個位圖(從PNG圖像文件加載)。每次保存表格時,PNG圖像的二進制數據都會在FMX文件中變化!爲什麼Delphi XE7會在每個FMX表格保存中更改PNG圖像?

這會弄亂我的版本控制日誌(SVN),因爲只更改表單中的一個屬性會導致數千個已更改的行。

有什麼辦法可以避免這種情況?

從SVN DIFF這裏

見截圖:

SVN diff here

當保存的表單中,DotInlay.PNG形象,不是我改變,甚至不包含圖像的控制有任何變化 。

編輯: 從評論,這是在Delphi中的錯誤,所以我創建了一個新的QP報告: https://quality.embarcadero.com/browse/RSP-11259

投票吧,如果你覺得它應該得到解決。

+0

相關問題[Delphi TImageList位圖更改](http://stackoverflow.com/questions/10744505/delphi-timagelist-bitmap-changes)Linkes QC被關閉爲「不會做」 –

+0

您可以做的唯一一件事不是要將這些更改提交到存儲庫,並在發生這些更改時將其還原。 –

+0

@DalijaPrasnikar是的,當我和VCL合作之前,它也發生了,但那只是每一幅圖像都會改變一行,我可以忍受。現在使用Firemonkey,二進制數據中的所有行都被更改。 – Hans

回答

2

IDE就是這樣。將二進制資源放入.dfm/.fmx文件中的風險之一。我不相信你能做任何事情。只有英巴卡迪諾可以改變他們的IDE。

與.dfm/.fmx文件和源代碼管理有關的是仔細檢查每個提交併還原意外的更改。無論如何,您都需要這樣做,因爲IDE確實有改變不應該改變的東西的習慣。即使對於非二進制資源。

但我的建議是,您不要將圖像放在.dfm/.fmx文件中。讓他們保持資源。這樣你可以將圖像文件放入修訂控件,並將其作爲資源鏈接到可執行文件。您需要在代碼中進行更多工作才能在運行時加載資源,但如果需要,可以將其包裝在輔助方法中,並且應將每個圖像加載減少到一行。

這種方法的真正好處是您可以更好地控制二進制資產。

+0

這似乎只發生在一半的圖像上,所以我想知道是什麼讓另一半在每次保存時都不會改變... – Hans

+2

誰知道。你可以嘗試請求Embarcadero改變,但我懷疑你會有很多運氣。 –

+1

實際上,FMX下的PNG流媒體是由操作系統例程(WIC)完成的。所以任何操作系統或內部的變化都可能導致這種情況。 –

相關問題