怎样知道随机文件的尾?(50分)

  • 主题发起人 主题发起人 tsxq
  • 开始时间 开始时间
T

tsxq

Unregistered / Unconfirmed
GUEST, unregistred user!
我要把指针移到文件尾进行添加新记录用。
谢谢。
 
你用什么读文件,如果是TFilestream,直接把指针移动到流末尾就行了
 
fileopen
fileseek
&filewrite
 
wjm:='lx.dat';
AssignFile(cwwj,wjm);
Reset(cwwj);
// if (not cwwj.Eof) then exit
for i:=1 to 20 do begin
Read(cwwj,cwjg);
if cwwj.eof then exit;
with cwjg do begin
memo1.Lines.Add(tk);//题库
memo1.Lines.Add(inttostr(th))
//题号
memo1.Lines.Add(inttostr(cwcs))
//错误次数
memo1.Lines.Add(inttostr(fxcs))
// 复习次数
memo1.Lines.Add(floattostr(fxl))
//复习率
memo1.Lines.Add(datetostr(cwsj))
// 错误时间
memo1.Lines.Add(datetostr(fxsj))
// 复习时间
end;
seek(cwwj,i);
end;
fileColse(cwwjm);

加粗部分就是我的要达到的目的,因为不知道打开的文件有多少条记录。
把原来用数据库编的东东改成文件型,因为这个问题卡住了。特殊原因不能用数据库。
 
-_- 我没看明白.....
先是if (not cwwj.Eof) then exit
也就是说 如果文件没到末尾,就结束本次调用.....??这样的话只有空文件才能继续下面的过程啊......

而你下面又开始读了一个cwjg结构,既然只有到了文件末尾才会调用下面的过程,那你怎么可能还能读到数据呢??
 
回hs-kill:
if (not cwwj.Eof) then exit
这一句通不过。好像"eof"不能检测随机文件尾。
我的问题就是用什么句子可以代替上面这个检测?
 
....
if not eof(cwwj) then exit;
 
谢谢hs-kill,可否再请教一问题,怎样知道该文件里有多少条随机记录?
 
这个.....在读文件的时候并不知道你的文件是什么格式,可能是纯文本,更可能是2进制代码.....
所以要看你怎么定义一条纪录,如果只是一单纯的换行来分隔的话.....建议你用个stringlist来读入,然后取stringlist.count就知道了
如果要用textfile来读......只好先循环一遍看看有多少行了
 
后退
顶部