[转帖]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读写。
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读写。
相关文章推荐
- .pdb文件详解+“.pdb”中的 PDB 格式不兼容;请删除并重新生成”解决办法
- 【转帖】PE文件格式详解
- PE文件格式详解(下)
- 以foobar可执行文件为例,详解解释ELF文件格式
- BMP文件格式详解(BMP file format)
- MP4文件格式详解——元数据moov(一)mvhd box
- 飞思卡尔单片机[STM8单片机]S19文件格式详解
- wav文件格式分析详解
- PE文件格式详解
- ASF文件格式详解(2)
- 浅谈Linux的可执行文件格式ELF(转帖)
- Android安全–Dex文件格式详解
- PE文件格式详解(下)
- MP4文件格式详解
- 实例-BMP文件格式详解
- 流媒体/流媒体文件格式详解
- FLV文件格式官方规范详解
- OBJ文件格式内幕详解
- 嵌入式 PCM WAVE格式详解及用C语言实现wave文件的读取
- SQLite数据库文件格式逐字节详解