你的问题没有说清楚 ,头文件里一般记录了数据类型,长度,和数量,如果有了这些,就可以读出了呀
如var
F:TFileStream;
Fh:Tfilehead;//tfilehead是文件头结构
ds: array of tdata;//tdata是所存的数据类型
begin
F:=TfileStream.create;
setlength(ds,fh.count);
f.read(ds,fh.count*sizeof(tdata));
F.free;
end;
上面是我写的小例子,其中tfilehead,tdata是我假设的头结构,和数据结构生成文件最好用FileCreate
如var
F:TFileStream;
Fh:Tfilehead;//tfilehead是文件头结构
ds: array of tdata;//tdata是所存的数据类型
begin
F:=TfileStream.create;
setlength(ds,fh.count);
f.read(ds,fh.count*sizeof(tdata));
F.free;
end;
上面是我写的小例子,其中tfilehead,tdata是我假设的头结构,和数据结构生成文件最好用FileCreate
f : file;
buf : pchar;begin
getmem(buf,100);//设文件头为100字节
blockread(f,buf,100);
//从buf中取出需要的数据从新计算下面要读入的数据空间大小
freemem(buf);
getmem(buf,newsize);
blockread(f,buf,newsize);
//处理
freemem(buf);
end;
TFileStream.ReadStream, TFileStream.WriteStream;
数据的格式为, 前一部分是几个概括性数据(文件头),后一部分是"数量不定"的大量整数型数据(数据量在程序中由某变量给出).1、请问怎样生成文件,并把数据存入?
(我希望用块写的方式,这样也许写来简单,读来也方便^_^,只是不知因为后面的数据“数量不定”,能否用块写。如果能,怎样写?)
请高手提供一个最佳方案!2、对于文件,有用Handle的,有用类型文件的,有用FileStream的,我分不清楚,请解释。
(如果用类型文件<var xx:file of x>,是否只能固定类型的数据?)3、另外,我用
var FileHdl:integer;
……
FileHdl:=FileOpen('d:\xxxx.txt',fmCreate);
……//写数据……
FileClose(FileHdl);
并没有生成 d:\xxxx.txt 文件,检查FileHdl,总是-1 !!!!为什么????
var
head:THeadDef;
buf :pointer;
f : file;
begin
//打开文件
blockwrite(f,@head,sizeof(head));
blockwrite(f,@buf,BufSize);
//关闭文件
end;