DELPHI读取文本文件内容,因为文本文件随时会有别的程序往里写东西,所以DELPHI在读取的时候就会报错。
3个回答
展开全部
问题是你在打开文件的时候,为什么是别人向文件写数据的时候.
所以你要修改你的方式.
所以你要修改你的方式.
追问
修改成什么方式?谢谢指教。
追答
修改成共享打开就可以.
换换别的打开文件的方式.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
To 楼主:
1、Reset并不是表示只读打开,它只是表示打开已有文件,如果文件不存在会失败;
2、Rewrite表示新建一个文件,如果原来有同名文件它会先删除再创建;
3、读写和共享模式需要用到一个System、SysUtils单元中的全局变量FileMode:
fmCreate、fmOpenRead、fmOpenWrite、fmOpenReadWrite控制你自己程序的权限;
fmShareCompat、fmShareExclusive、fmShareDenyWrite、fmShareDenyRead、fmShareDenyNone控制别的程序的访问权限;
4、你的程序应该这么写:
AssignFile(f, 'aaa.txt');
FileMode := fmOpenRead or fmShareDenyNone;{只读+共享读写}
Reset(f);
Readln(f, str);
1、Reset并不是表示只读打开,它只是表示打开已有文件,如果文件不存在会失败;
2、Rewrite表示新建一个文件,如果原来有同名文件它会先删除再创建;
3、读写和共享模式需要用到一个System、SysUtils单元中的全局变量FileMode:
fmCreate、fmOpenRead、fmOpenWrite、fmOpenReadWrite控制你自己程序的权限;
fmShareCompat、fmShareExclusive、fmShareDenyWrite、fmShareDenyRead、fmShareDenyNone控制别的程序的访问权限;
4、你的程序应该这么写:
AssignFile(f, 'aaa.txt');
FileMode := fmOpenRead or fmShareDenyNone;{只读+共享读写}
Reset(f);
Readln(f, str);
追问
FileMode := fmOpenRead or fmShareDenyNone;{只读+共享读写}
这句加上了,还是报I/O error 32.
追答
1、我估计另外一个写数据的程序设成了独占访问模式(FileMode = fmShareExclusive或CreateFile的dwShareMode = 0)。这个比较麻烦,就是另外一个程序运行后,排斥你的读权限、写权限,你什么都做不了。
2、一般的程序至少会允许别的程序进行读取。哪个编的写数据程序,不是故意就是水平烂的可以。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询