文件指针的问题(100分)

  • 主题发起人 主题发起人 grand2004
  • 开始时间 开始时间
G

grand2004

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟刚开始学delphi不到两个星期,最近想用他做一个日志分析工具,日志文件为文本文件,小弟用reset() 和readln()函数读取文件中的内容进行分析,但当文件指针到文件尾时,应该使用哪个函数将文件指针重新定位到文件头呢?
 
可以用Seek过程:重新定位到文件头,Seek(f,0);
procedure Seek(var F; N: Longint);

function FilePos(var F): Longint;是返回当前位置的函数

 
不行啊老兄,我是这样定义的
var
F : textfile;
begin
Assignfile(F,edit1.Text);
reset(F);
seek(f,0);
.....
但当执行到seek(f,0)的时候系统提示
Build
[Error] Unit1.pas(86): Incompatible types
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
请问应该用什么才好
 
要用seek函数, 你的F定义不对。
例子:
procedure TForm1.Button1Click(Sender: TObject);

var
f: file of Byte;
size: Longint;
S: string;
y: Integer;
begin
if OpenDialog1.Execute then
begin
AssignFile(f, OpenDialog1.FileName);
Reset(f);
try
size := FileSize(f);
S := 'File size in bytes: ' + IntToStr(size);
y := 10;
Canvas.TextOut(5, y, S);
y := y + Canvas.TextHeight(S) + 5;
S := 'Seeking halfway into file...';
Canvas.TextOut(5, y, S);

y := y + Canvas.TextHeight(S) + 5;
Seek(f, size div 2);
S := 'Position is now ' + IntToStr(FilePos(f));
Canvas.TextOut(5, y, S);
finally
CloseFile(f);
end;
end;
end;
 
最土的办法:关闭-》打开
 
yostgxf 老兄说方法很好,但对于我这样刚入门的初级菜鸟来说还是不会用的,因为我必须得使用readln()函数,对读取的每一个字符串进行搜索分析,日志文件纯文件文件,有哪位前辈能告诉我下面的这种定义方法,怎么才能让文件指针指向文件头部呢?
var
F : textfile;
I : integer;
begin
Assignfile(F,edit1.Text);
reset(F);
FOR I := 1 to 10 do
begin
while not eof(f) do
......
end;
seek(f,0);//这个方法不对,哪位前辈能告诉我这里应该使用什么方法让文件指指针指向文件头呢?
end;
end.
 
那就用
Close(F);//关闭文件
reset(F);//打开文件
 
啊`,不会吧,上面只是个例程而已,实际应用中如果要用reset(f)的话,那可得关闭/打开上面次文件呢.
 
老兄,什么年代了还用这个,改用流吧,去找找TStream/TMemoryStream/TFileStream的文章,你会很高兴放弃文件指针的
 
后退
顶部