• [转帖]PDB文件格式详解


    作为“角摩手机电子书专家”下一个版本的参考!

    PDB文件结构

    PDB是Palm Database的缩写,是一种简单格式的二进制文件,只要弄清楚了pdb文件的格式,就可以在PC上读写它。

    1、 PDB文件的总体结构
    PDB文件总体上由以下三个部分组成,

    文件头(Header)
    记录索引(Record Entry Index)
    记录数据(Record Data)


    文件头里面主要包括数据库名称、属性、创建时间等一些信息。记录索引有点像书本的目录部分,可以根据这个目录查到第几个记录在“第几页”(偏移量offset)。数据部分才是真正的数据。

    2、 文件头
    文件头的结构如下:

    用UltraEdit打开一个PDB文件来进行实力分析
    PDB头

    Database Name

    图中涂蓝的部分为数据库名称(Database Name), 共21个字节,以空字符00 00结尾

    Create Time、Modified Time、Backup Time
    12字节

    Type、Creator ID
    8个字节

    Records Count
    2个字节

    文件头结束

    3、记录数据

    记录索引

    第一条记录的索引




    第n条记录索引的计算公式:
    78+(n-1)*8

    记录数据

    由第2条记录的索引可知,第2条记录的数据部分开始于00 00 00 80处,



    弄清了pdb的结构,可以用编写程序读写它,我用Delphi定义了一个pdb的类,

    //class PDB
    type
       TPDB=class
    private
    FDBName:String;
    FFlags:integer;
    FCreateTime:TDateTime;
    FModifiTime:TDateTime;
    FType1:String;
    FCreatorID:String;
    FRecordCount:integer;
    FIndex:array of integer;
    FAttrib:array of integer;
    FRecSize:array of integer;
    FData:array of String;
    procedure SetDBName(const Value: string);
    procedure SetFlags(const Value: integer);
    procedure SetCreateTime(const Value: TDateTime);
    procedure SetModifiTime(const Value: TDateTime);
    procedure SetType1(const Value: String);
    procedure SetCreatorID(const Value: String);
    procedure SetRecordCount(const Value: integer);

    public
    Constructor create(pdbfile:string);
    property DBName: string read FDBName write SetDBName;
    property Flags:integer read FFlags write SetFlags;
    property CreateTime:TDateTime read FCreateTime write SetCreateTime;
    property ModifiTime:TDateTime read FModifiTime write SetModifiTime;
    property Type1:String read FType1 write SetType1;
    property CreatorID:String read FCreatorID write SetCreatorID;
    property RecordCount:integer read FRecordCount write SetRecordCount;
    function GetRecords(i:integer):string;
    end;

    接下来可以用一个文件流TFileStream读写。




  • 相关阅读:
    练习题 求字符串是否为回文
    JavaScript效果下载网站!
    遍历页面所有的Checkbox,显示选中的ID
    祝福自己生日快乐!
    【原创】datalist repeater 控件的行鼠标单击 以及 滑过特效
    删除此文 并不能解决问题
    javascript屏蔽脏字
    【MM系列】SAP 物料凭证增强
    【MM系列】SAP 客户增强
    【MM系列】SAP 交货单屏幕增强
  • 原文地址:https://www.cnblogs.com/freemobile/p/1232200.html
Copyright © 2020-2023  润新知