我们有一个DFM文件,它以文本文件开头。
几年后,在我们的一个较新版本中,Borland Developer Studio将其更改为二进制格式。
此外,该文件已被感染。
有人可以解释一下我现在该怎么办?我在哪里可以找到如何读取二进制文件结构?
答案 0 :(得分:0)
好吧,我发现DFM文件会发生什么,但我不知道为什么。
从文本文件更改为二进制文件的出现是已知的,可以在另一个问题的堆栈溢出中找到。我只会描述文件的感染。
在Pascal中,DFM文件的原始语言,字符串定义如下:第一个字节是字符串的长度(0-255),其他字符是字符串。 (与C不同,其字符串长度由空字符识别)。
有人(可能是BDS?)在将文件从文本文件更改为二进制文件时,也将长度为13(0D)的所有字符串更改为长度为10(0A)。这样,字符串在10个字符后完成,下一个字符是属性的值。
我下载了二进制编辑器,修复了所有长度为10的事件,并且文件显示和编译得很好。
(不仅感染了属性的长度,而且还将Icon.Data属性上的一个字节从0D替换为0A)