dfm格式转换: 将二进制格式转为文本格式
2008-04-09 04:24:54来源:互联网 阅读 ()
在:DFM文件与XML文件互转 中,用到的dfm文件必须为文本格式, 如果是二进制格式, 处理就会出错.
但是在处理中如何判断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;
至此,大功告成!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:生成BIG5字符集所有字符
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash