写二进制文件的问题!(20分)

C

cool136

Unregistered / Unconfirmed
GUEST, unregistred user!
我想将数据库的所有记录转写成二进制文件格式.
但是却只能写入一条记录!!!
后来,我发现是因为用了rewrite的问题,于是改成append(file);
但编译又出错,说类型不符(好像append只适合于textfile)。
改用filewrite,编译通过,但结果和rewrite一样!
请大家帮帮我这个菜鸟吧,简单的给出可以将所有记录都写入二进制文件的方法.
(注:文件的写入是动态的)

 
新建文件时用rewrite
打开已有的文件时用reset
 
这个我当然知道。
我指的的是如何给已经存在的文件添加记录。
比如有一条记录5秒种刷新一次,每次刷新后都将新的记录
写入同一个二进制文件中。
 
help me please~
 
procedure BlockWrite(var f: File; var Buf; Count: Integer [; var AmtTransferred: Integer]);
 
用seek()定位到文件得最后在写就可以,具体看看帮助
 
郁闷中。。。 请看下面代码:
assignfile(dfile,path);
reset(dfile);
filemode:=1;
seek(dfile,sizeof(dfile));
write(dfile,temprecord);
closefile(dfile);

运行后,二进制文件突变为6.5KB!!
用ue打开后发现中间都是00 !!!
 
等高手来解答!
分只给第一个完全答对的人
 
type
PMyRecord=^TMyRecord;
TMyRecord=packed record
FID:Integer;
FName:string[20];
end;


procedure AppendRecord(FileName:string; ARecord:TMyRecord);
var
Stream:TFileStream;
OpenMode:Word;
begin
if not FileExists(FileName) then
OpenMode:=fmCreate
else
OpenMode:=fmOpenReadWrite;
Stream:=TFileStream.Create(FileName,OpenMode);
try
Stream.Seek(0,soEnd);
Stream.Write(ARecord,SizeOf(ARecord));
finally
Stream.Free;
end;
end;
 
顶部