我应如何从FileWrite写的文件(可能是无类型的吧)中读出我写进去的数字(长度不定)?(100分)

  • 主题发起人 主题发起人 kevin.j
  • 开始时间 开始时间
K

kevin.j

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个非文本文件,我想给它加一个文件头,
文件头包括一个我定义的字符串(定长),然后是文件正文的长度(长度不定).
最后是文件体,我该如何读写文件头中的文件体长度?
 
指定从开始到该位置的字节数,读取改字节
 
老哥,请详细点.
我想从我定义的字符串后面开始,
一个一个字节的读,一直读到数字的结束处(结束处我可以在写的时候加入一个特殊的字符)然后再用strtotint转换过来使用,不知可行否?
 
长度为何会不定呢?文件长度是不定的,但存储空间的长度固定不就行了!
如:
00 00 23 45
要空足够的位,我想这样做简单些。
 
文件名:test.txt
var
f:file of type;
i,s:longint;
x:byte;
...
assignfile(f,'test.txt');
reset(f);//以读方式打开
//假设你要从第24个字节开始读
seek(f,24);//移动读文件指针
s:=filesize(f);
for i:=24 to sdo
begin
read(f,x);//每次读一个字节
if x=你设定的控制字符 then
//结束
end;
 
谢谢popeye,menxin.
你们的建议对我帮助很大,
menxin的方法我试了,好使:) 但是写的时候得转换成char,
popeye的方法对文本文件好使,对FileWrite写的文件不一定都好使,
而且我发现写进去的字符串用编辑软件无法看:<
所以估计我写进去的特殊字符':'也变形了吧!
有一个疑问:我先用一个string类型的变量读长度为8的字符串,再读长度为7的
字符串,8的显示正确,7的不正确,如果我定义两个string类型的变量,分别读
两个字符串.就都可以正常显示了,这是为什么?而且我读长度为8的字符串时
只要把长度设成3或者3-8之间的数时,也能正常读出来,why?
 
后退
顶部