您的位置:首页 > 其它

[转帖]PDB文件格式详解

2008-06-30 00:08 399 查看
作为“角摩手机电子书专家”下一个版本的参考!

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读写。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: