奇怪的EInOutError错误

superjs 2001-09-12 04:47:11
先请看代码:
FileNum:='000';//string类型
procedure TfrmConfig.AnalyzeLog;
var
mFileName:string;
begin
mFileName:=FilePath+ FileNum +'.log';
self.Loader(mFileName);
end;
procedure TfrmConfig.Loader(mFn: string);
var
F:TextFile;
S:string;
begin
if not FileExists(mFn) then exit;

AssignFile(F,mFn);
Reset(F);//出错处
try
while not eof(F) do
begin
Readln(F, S);
if leftstr(S,1)<>'#' then showmessage(S);
end;
finally
CloseFile(F);
AddFl();
end;
end;

procedure TfrmConfig.AddFl;
var
iTemp:integer;
sTemp:string;
i:integer;
begin
iTemp:= StrToInt(FileNum) + 1;
For i:= 1 To 3-Length(IntToStr(iTemp)) do
begin
sTemp := '0'+sTemp
end;
FileNum := sTemp+IntToStr(iTemp);
Loader(FilePath + FileNum + '.log');
end;

我是从一个日志文件中提取不以‘#’开头的行然后加以处理,我发现,如果在没有不以‘#’开头的文件中,下次递归调用即AddFl后,到出错处一切正常,但是如果在有不以‘#’开头的文件中,下次递归调用即AddFl后就一定会报EInOutError错误,到底是为什么?是不是我有什么东西没有释放呢?
小弟初学Delphi请多指教!!!

...全文
892 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
superjs 2001-10-09
  • 打赏
  • 举报
回复
唉,我用TFileStream,一个字节一个字节的读出来判断了!算是结束了,给分!
wwwxxx 2001-09-20
  • 打赏
  • 举报
回复
不知‘leftstr’怎么定义,为何不用‘S[1]’?
wwwxxx 2001-09-20
  • 打赏
  • 举报
回复
注意:把AddFl()已经在finally外面。
hellion 2001-09-20
  • 打赏
  • 举报
回复
把AddFl();拿到finally外面试试。
BS 2001-09-20
  • 打赏
  • 举报
回复
试一下这样写
procedure TfrmConfig.Loader(mFn: string);
var
F:TextFile;
S:string;
begin
if not FileExists(mFn) then exit;

AssignFile(F,mFn);
Reset(F);//出错处
try
while not eof(F) do
begin
Readln(F, S);
if leftstr(S,1)<>'#' then showmessage(S);
end;
except
CloseFile(F);
end;
CloseFile(F);
AddFl();
end;
end
pathe 2001-09-20
  • 打赏
  • 举报
回复
我已看过你的程序,应该没有错;但不知你leftstr(s,1)是怎么写的
我用的是if S<>'' then
if S[1]<>'#' then showmessage(S);
程序应该可以达到你的要求,但我个人觉得这样做并不是很好!
superjs 2001-09-20
  • 打赏
  • 举报
回复
感谢,这样我才又能up了!
水清无鱼 2001-09-20
  • 打赏
  • 举报
回复
只可惜我不懂呀,我真的很想帮忙的:)
pathe 2001-09-20
  • 打赏
  • 举报
回复
是的,you are right!
但你的程序在我这运行良好,没什么问题!
superjs 2001-09-20
  • 打赏
  • 举报
回复
这个问题我研究了很长时间!
在大富翁上也发帖子讨论很多时间了,但是还是没有解决!
有兴趣可以去看看!
http://www.delphibbs.com/delphibbs/dispq.asp?lid=625353
superjs 2001-09-20
  • 打赏
  • 举报
回复
leftstr是delphi6的函数啊和vb中的left一样的!
superjs 2001-09-12
  • 打赏
  • 举报
回复
来人啊,救命啊!
superjs 2001-09-12
  • 打赏
  • 举报
回复
还是都在灌水啊!
superjs 2001-09-12
  • 打赏
  • 举报
回复
来人啊,分不够可以加!
为什么都这么势力呢!
jianshen 2001-09-12
  • 打赏
  • 举报
回复
up Three
jianshen 2001-09-12
  • 打赏
  • 举报
回复
up Two
jianshen 2001-09-12
  • 打赏
  • 举报
回复
up One
superjs 2001-09-12
  • 打赏
  • 举报
回复
也许是我没有说清楚吧,我是从一批有特点的log文件中读取数据
如:
000.log
001.log
002.log
等!
superjs 2001-09-12
  • 打赏
  • 举报
回复
Waiting......
superjs 2001-09-12
  • 打赏
  • 举报
回复
仔细看一下,是许多个文件!
加载更多回复(1)

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧