写文本文件出错,大家给我看看. ( 积分: 50 )

  • 主题发起人 主题发起人 leadroy
  • 开始时间 开始时间
L

leadroy

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.bsSkinButton1Click(Sender: TObject);
var
f: TextFile;
size: Longint;
S: string;
y: Integer;
x:string;

begin
try
x:='测试';
AssignFile(f,DI.Caption+c.SelectedItem.FileName);
reset(f);
while not eof(f) do
begin
ReadLn(f,S);
if Pos('00:00',S)>0 then
begin
Writeln(f,x);
showmessage('写入成功');
Flush(f);
CloseFile(f);
break;
end;
end;
except
CloseFile(f);
end;


end;



就在 Writeln(f,x);出错,错误为I/O error 105
 
你用 reset(f)打开的文件是只读
当然一写就出错啦
 
不可能吧,DELPHI说明中明确说明在不做说明时是以读写方式打开文件的.
如我加一条append(f),再做Writeln(f,x)操作就不会有问题.
现在问题是查出来了,在读文件时不能再同时写文件.
由于我的文件有几万个,考虑到性能问题,我不想再建立一个新文件,想直接修改这个文件,问题就在这个地方.

我现在要实现的功能也很简单:
在一个文本文件中找一个特定的字符串,找到在他的前面插入一行新的字符串.
 
把Reset(f) 改为rewrite(f)试试```
 
用TStringStream就不存在这个问题了。
 
后退
顶部