Ins*_*ter 5 delphi binary delphi-2010
我维护一个Delphi程序,它使用类型化的二进制文件作为其本机文件格式.从Turbo Delphi升级到Delphi 2010后,存储的记录类型中的所有字符开始以2个字节而不是1个字节存储.
存储的数据类型是char
和array[1..5] of char
.
所以之前,文件的一部分看起来像:
4C 20 20 20 4E 4E 4E 4E
Run Code Online (Sandbox Code Playgroud)
现在它看起来像:
4C 00 20 00 20 00 20 00 4E 00 4E 00 4E 00 4E 00
Run Code Online (Sandbox Code Playgroud)
首先,为什么这首先发生?
其次,我怎么还能读取我的文件,记住现在宇宙中有旧文件和新文件?
我会在午餐后痴迷地监视这个问题.请随时在评论中询问更多信息.
Mas*_*ler 11
这种情况发生在Delphi 2009 中将默认字符串类型从AnsiString更改为UnicodeString时.听起来就像是在向文件写入字符串.在记录中重新声明它们,AnsiString
它应该工作正常.
同样如此char
.原始的char是一个AnsiChar,每个字符一个字节.现在默认的char是一个WideChar,它是一个UTF-16字符,每个字符2个字节.将您的char数组重新声明为数组,AnsiChar
然后您将获得旧文件样式.
至于意识到两种风格都存在,这是一团糟.除非升级Delphi版本时文件中的版本号已被更改,否则我认为您唯一能做的就是扫描00
字符数据中的字节,然后将其读入记录的一个AnsiChar
或一个WideChar
版本中根据它是否找到它.
归档时间: |
|
查看次数: |
2056 次 |
最近记录: |