Delphi

本类阅读TOP10

·分布式网络考试系统原型分析及实现
·游戏外挂设计技术探讨①
·使用HOOK随心监视Windows
·Delphi 水晶报表打包解决
·试题库开发中非文本数据的处理
·如何将几个DBGRID里的内容导入同一个EXCEL表中....的问题
·如何使用Delphi设计强大的服务器程序
·工人线程中关闭窗体的实现
·用DLL方式封装MDI子窗体。
·支持XP下托盘栏气球提示的托盘单元

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
dfm格式转换: 将二进制格式转为文本格式

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

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

至此,大功告成!




相关文章

相关软件