如何读写这样一个二进制文件(75分)

  • 主题发起人 主题发起人 lvzhijong
  • 开始时间 开始时间
L

lvzhijong

Unregistered / Unconfirmed
GUEST, unregistred user!
文件头存放每次存放数据的长度(起着索引的作用)
第一次存放的数据句文件头一定距离(比如1k字节),第二次存放的数据挨着第一次的,
以此类推。。。
delphi如何实现呢?c可以用fread,fseek,fwrite。
还有,这样的文件最大可以多大字节?
 
Blockread、Seek、Blockwrite
用TFileStream更加方便——Read、Seek、Write。
2GB。
 
to creation-zy:
delphi帮助上没有filestream的example
您能给一个吗?多谢
 
没有example可以看Help的具体内容。已经很详细了。
var
i,n:Integer;
str:string;
Buf:array[0..1024] of Char;
Fs:TFileStream;
begin
if OpenDialog1.Execute=false then
exit;
Fs:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
n:=Fs.Size
//获得文件长度
Fs.Seek(0,soFromBeginning)
//定位到文件头
if n>1024 then
n:=1024;
Fs.Read(Buf,n);
Caption:=IntToStr(n);
SetLength(str,n);
Fs.Free;
for i:=1 to n do //将不可显示字符转换为'.'
begin
if Buf[i-1]>=' ' then
str:=Buf[i-1]
else
str:='.';
end;
Memo1.Text:=str;
end;
 
其实pascal的文件操作已经够好的了,用流效率不见得高,还是用
blockread/write实在
 
用Windows里的东东效率会更高些。
 
to wlmmlw:能否明示?
 
to wlmmlw:windows里的那些东东?
 
多人接受答案了。
 
后退
顶部