自定义的数据库文件的建立和存取问题!(100分)

  • 主题发起人 主题发起人 ml.guo
  • 开始时间 开始时间
M

ml.guo

Unregistered / Unconfirmed
GUEST, unregistred user!
我要将下面信息保存到一个自定义的数据库中:

字段 说明
-----------------
Name 姓名
Sex 性别
Birthday 出生年月
Address 住址
tel 联系电话
memo 备注

问题:1、根据上述字段建立一个自定义的数据库文件(并非 dbase 、 access 、 paradox 数据库文件)。
2、如何保存上述内容到该数据库文件中;
3、如何取出数据来。
最好就是给出实现的步骤、代码。
 
怎么没人理这个问题??
 
怎么没人理这个问题??????
 
对不起,我是来听的
 
PASCAL类型文件即可
 
unit persrec;

interface
uses classes,dialogs,sysutils;
type
TpersonRec=packed record
Name:string[6];
sex:string[1];
address:string[50];
tel:integer;
end;

TRecordStream=class(TFileStream)
private
function GetNumRecs:longint;
function GetCurRec:longint;
procedure SetCurRec(RecNo:longint);
protected
function GetRecSize:longint;virtual;
public
function SeekRec(RecNo:longint;Origin:word):longint;
function WriteRec(const Rec):longint;
function AppendRec(const Rec):longint;
function ReadRec(var Rec):longint;
procedure First;
procedure Last;
procedure NextRec;
procedure PreviousRec;
property NumRecs:longint read GetNumRecs;
property CurRec:longint read GetCurRec write SetCurRec;
end;
implementation

function TRecordStream.GetRecSize:longint;
begin
Result:=SizeOf(TPersonRec)
end;

function TRecordStream.GetNumRecs:longint;
begin
Result:=Size div GetRecSize;
end;

function TRecordStream.GetCurRec:longint;
begin
Result:=(Position div GetRecSize)+1;
end;

procedure TRecordStream.SetCurRec(RecNo: Longint);
begin
{ This procedure sets the position to the record in the stream
specified by RecNo. }
if RecNo > 0 then
Position := (RecNo - 1) * GetRecSize
else
Raise Exception.Create('Cannot go beyond beginning of file.');
end;

function TRecordStream.SeekRec(RecNo:longint;Origin:word):longint;
begin
Result:=Seek(RecNo*GetRecSize,origin);
end;

function TRecordStream.WriteRec(const Rec):longint;
begin
Result:=Write(Rec,GetRecSize);
end;

function TRecordStream.AppendRec(const Rec):longint;
begin
Seek(0,2);
Result:=Write(Rec,GetRecSize);
end;

function TRecordStream.ReadRec(var Rec):longint;
begin
Result:=Read(Rec,GetRecSize);
seek(-GetRecSize,1);
end;

procedure TRecordStream.First;
begin
Seek(0,0);
end;

procedure TRecordStream.Last;
begin
Seek(0,2);
Seek(-GetRecSize,1);
end;

procedure TRecordStream.NextRec;
begin
if ((Position+GetRecSize) div GetRecSize)=GetNumRecs then
//raise Exception.Create ('cannot read beyond end of file')
abort
else
Seek(GetRecSize,1);
end;

procedure TRecordStream.PreviousRec;
begin
if (Position-GetRecSize >=0) then
Seek(-GetRecSize,1)
else
//raise Exception.Create ('cannot read beyond beginning of the file.');
abort;
end;

end.
 
可以的呀,没问题.
可以定义成文本文件(文本数据库)
 
十分多谢wwqcf的回答;
不过可否说说如果再增加一个个人相片,是否是定义成TJPEGIMAGE
类型,但是它是不定长的,按上程序是否还管用?分可再加。
 
接受答案了.
 
后退
顶部