2013-01-01 26 views
0

我們有一個以文本文件開頭的DFM文件。DFM文件變成二進制文件並被感染

若干年後,我們的新版本之一,Borland的開發工作室把它改爲二進制格式。

此外,該文件被感染。

有人可以解釋我,我應該怎麼辦呢?我在哪裏可以找到如何讀取二進制文件結構?

回答

0

好吧,我發現了什麼發生了DFM文件,但我不知道爲什麼。

從文本文件爲二進制一個被稱爲改變的發生,並可能在另一個問題堆棧溢出被發現。我只會描述文件的感染。

在帕斯卡,DFM的文件的原始語言,一個字符串定義這樣:第一個字節是串(0-255)和其他字符的長度是字符串。 (不像C,它的字符串長度被空字符識別)。

有人(或許BDS?),而改變從文本文件到一個二進制文件,也改變長度13(10D)的所有字符串是長度爲10(0A)。這樣,字符串在10個字符之後完成,並且下一個字符是該屬性的值。

我下載的二進制編輯器,固定長度10的所有出現,並顯示和編譯的文件了。

(不僅屬性長度感染,而且還對Icon.Data屬性的一個字節被替換從0D 0A到)

+0

我嚴重懷疑BDS本身以這種方式改變了DFM數據。 DFM已經在Delphi中用於文本和二進制格式的LONG LONG時間。在Delphi VCL框架中都得到了很好的支持。更有可能的情況是外部源代碼控制應用或其他實用程序應用程序偶然將DFM二進制數據解析爲文本數據,並對其執行換行符標準化,將裸露的CR轉換爲純粹的LF。 –

+0

@Aharon - 你有沒有機會使用SourceSafe並將dfm作爲文本輸入到二進制文件中?或者你可以提供一個鏈接到*從文本文件更改爲二進制文件已知*。除了我的SourceSafe相遇之外,我從來沒有遇到過問題。 –

+2

@LievenKeersmaekers我們使用Borland StarTeam中,但似乎該文件是由BDS在2版本進行更換並作爲一個二進制文件,直到我負責解決它。我無法理解開發人員在受感染時如何處理它。他們告訴我這很難。 – Aharon