翰文个人计算机学习网
  • 翰文快讯
  • 翰文PC快讯
  • 综合软件区
  • 操作系统
  • 注册表解析
  • Windows系列
  • Unix/Linux
  • 其他系统
  • 应用软件
  • 微软MS Office
  • WPS Office
  • 多媒体软件
  • 图像处理
  • Photoshop
  • Painter
  • Illustrator
  • CorelDRAW
  • 三维空间
  • AutoCAD
  • 3DMAX
  • 3DMAYA
  • 硬件资源
  • 攒机指南
  • 硬件超频
  • 维修指南
  • 网络资源
  • 在线通讯
  • 网上冲浪
  • 浏览器中心
  • 网络故障解析
  • 病毒资料
  • 病毒通报
  • 病毒防治
  • 病毒常识
  • 黑客技巧
  • SQL/MySQL
  • Oracle
  • Delphi
  • 编程资源
  •  C/C#/C++/VC++/VC.NET
  •  Basic/VB/VB.NET/VBScript
  •  FoxBasic/FoxPro/VF/VF.NET
  •  Java/JavaScript
  • PowerBuilder
  • 热门词:
  • 翰文计算机学习网首页
  • >
  • Delphi
  • >
  • 将二进制格式的DFM格式转换为文本格式
  • 将二进制格式的DFM格式转换为文本格式

  • 资源来源:
  • HW-PCS.ORG
  • 资源作者:
  • 翰文计算机学习网
  • 人气指数:
  • [5039]
  • 关键词:
      在.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;

      至此,基本程序已经完成!

    感谢您对翰文计算机学习网的支持

  • 关于我们
  • 联系方式
  • 成功案例
  • 技术报价
  • RSS索引
  • 网站地图
  • 翰文电脑学习网
  • MSN:LNDDYGYC9@HOTMAIL.COM Powered by 翰文个人计算机学习网 版权所有,未经允许不得转载
    ICP备案号码:[沪ICP备12020678号] Copyright 2008-2020 HW-PCS.ORG, All Rights Reserved.