最新新闻 NEW6
1  Linux基础知识
2  数据库设计范式
3  六种设置方法彻底优化
4  黑客Web欺骗的工作
5  dfm格式转换: 将
6  五种提高 SQL 性

热门新闻 HOT6

 qq声音下载 qq声 112463
  windows中英 19598
 目录册,报价单制作, 18015
 windows中英文 16967
 批量在图片上添加文字 15837
 二进制与十六进制对照 15662

 
     新 闻 中 心 - 详 细 内 容
 
dfm格式转换: 将二进制格式转为文本格式
双击自动滚屏 免费大作,古代风格的武侠游戏背单词 发布者:admin 发布时间:2008-2-27 阅读:7216

转贴:

在: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; 

至此,大功告成!

 
 
打印本页 | 关闭窗口

| 企业邮局 | 企业荣誉 | 营销网络  | 产品分类  | 信息反馈联系我们 | 留言评论 | 网络游戏 | | |

版权所有 Finer Tech  浙ICP备11014575号-1