Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms DFM文件变成二进制文件并被感染_Forms_Delphi_Dfm - Fatal编程技术网

Forms DFM文件变成二进制文件并被感染

Forms DFM文件变成二进制文件并被感染,forms,delphi,dfm,Forms,Delphi,Dfm,我们有一个以文本文件开头的DFM文件 几年后,在我们的一个较新版本中,Borland Developer Studio将其更改为二进制格式 此外,该文件被感染 有人能告诉我现在该怎么办吗?在哪里可以找到如何读取二进制文件结构?我找到了DFM文件的情况,但我不知道为什么 从文本文件更改为二进制文件的发生是已知的,在另一个问题的堆栈溢出中可以找到。我只描述文件的感染情况 在DFM文件的原始语言Pascal中,字符串定义如下:第一个字节是字符串的长度(0-255),其他字符是字符串。(与C不同,C的字

我们有一个以文本文件开头的DFM文件

几年后,在我们的一个较新版本中,Borland Developer Studio将其更改为二进制格式

此外,该文件被感染


有人能告诉我现在该怎么办吗?在哪里可以找到如何读取二进制文件结构?

我找到了DFM文件的情况,但我不知道为什么

从文本文件更改为二进制文件的发生是已知的,在另一个问题的堆栈溢出中可以找到。我只描述文件的感染情况

在DFM文件的原始语言Pascal中,字符串定义如下:第一个字节是字符串的长度(0-255),其他字符是字符串。(与C不同,C的字符串长度由空字符识别)

有人(可能是BDS?)在将文件从文本文件更改为二进制文件时,也将所有长度为13(0D)的字符串更改为长度为10(0A)。这样,字符串在10个字符后结束,下一个字符是属性的值

我下载了二进制编辑器,修复了所有长度为10的问题,文件显示和编译良好


(不仅属性的长度受到影响,图标上的一个字节也受到影响。数据属性从0D替换为0A)

我严重怀疑BDS本身是否以这种方式更改了DFM数据。DFMs在Delphi中已经使用了很长时间,包括文本格式和二进制格式。在Delphi VCL框架中,两者都得到了很好的支持。更可能的情况是,外部源代码管理应用程序或其他实用程序应用程序只是意外地将DFM二进制数据解析为文本数据,并对其执行换行规范化,将裸CRs转换为裸LFs。@Aharon-您是否有机会使用SourceSafe并将DFM作为文本io二进制签入?或者您可以提供一个链接,链接到已知的从文本文件到二进制文件的更改。除了我的SourceSafe遭遇之外,我从来没有遇到过其他问题。@LievenKeersmaekers我们使用Borland StarTeam,但在我负责修复之前,BDS似乎在版本2更改了该文件,并将其作为二进制文件签入。我无法理解,当它被感染时,开发人员是如何处理它的。他们告诉我这很难。我不知道你说的“感染”是什么意思。。。也许你是说“腐败”?在任何情况下,运行\bin\convert.exe-i-s-t*.dfm将它们转换回文本。不确定,你能为“感染”做些什么