DFM文件与XML文件互转
2008-10-30 11:56
417 查看
在:DFM文件与XML文件互转 中,用到的dfm文件必须为文本格式, 如果是二进制格式, 处理就会出错.
但是在处理中如何判断dfm是二进制文件, 而且再将二进制文件转为文本格式呢. ---
dfm文件二进制格式时, 其文件会加一个文件头, 其中前3个字节来标识其为二进制, 这三个字节分别为:$FF, $0A, $00. 因为这三个字节在文本类型的文件中是不可能存在的,所以可以判断这3个字节就可以了.
判断出来后, 再将二进制转为文本格式就容易了.Delphi提供了ObjectResourceToText函数.写法如下:
至此,大功告成!
但是在处理中如何判断dfm是二进制文件, 而且再将二进制文件转为文本格式呢. ---
dfm文件二进制格式时, 其文件会加一个文件头, 其中前3个字节来标识其为二进制, 这三个字节分别为:$FF, $0A, $00. 因为这三个字节在文本类型的文件中是不可能存在的,所以可以判断这3个字节就可以了.
function IsBinDfm(const ADfmFileName: string): Boolean; Var mBinStream:TMemoryStream; mBuff : array [0..2] of byte; begin mBinStream := TMemoryStream.Create; try mBinStream.LoadFromFile(ADfmFileName); mBinStream.Read(mBuff, 3); //前三字节: $FF, $0A, $00 if (mBuff[0] = $FF) and (mBuff[1] = $0A) and (mBuff[2]= $00) then Result := True else Result := False; finally mBinStream.Free; end; end;
判断出来后, 再将二进制转为文本格式就容易了.Delphi提供了ObjectResourceToText函数.写法如下:
procedure DfmBin2Txt(ADfmFileName: string); Var inFileStream: TMemoryStream; outFileStream: TFileStream; begin inFileStream := TMemoryStream.Create; inFileStream.LoadFromFile(ADfmFileName); try outFileStream := TFileStream.Create(ADfmFileName, fmCreate); try try inFileStream.Seek(0, soFromBeginning); ObjectResourceToText(inFileStream, outFileStream); except Raise Exception.Create('This dfm is bin, error on trans bin to txt.'); end; finally outFileStream.Free; end; finally inFileStream.Free; end; end;
至此,大功告成!
相关文章推荐
- DFM文件与XML文件互转
- PHP 生成 XML 文件时 无效字符的问题
- web.xml文件的作用
- xml文档的生成与解析头文件字符集的设定
- 从XML文件中读取数据绑定到DropDownList
- web.xml的schema文件
- TreeView 绑定XML文件
- web.xml配置文件
- jar包中含有Android图片文件以及按钮等selector.xml的替代方案
- Android布局文件layout.xml的一些属性值
- eclipse启动Tomcat的时候提示我缺少server.out.xml文件是什么意思?
- Android中measure过程、WRAP_CONTENT详解以及xml布局文件解析流程浅析(下)
- 通过浏览器界面编写xml文件、解析xml
- 2007年中加密 Office 打开 XML 文件中包含宏不运行 Office 程序
- android开发中怎么获取manifest.xml文件中(meta-data)的信息
- .net2005怎么读string形的xml,不是xml文件。
- spring-mybatis.xml配置文件,spring与mybatis整合在一起
- Opencv输出XML和YAML文件
- C#读写xml文件
- AndroidManifest.xml文件解析