文件访问错误

数字蛋糕 2001-08-18 05:22:59
我在使用AssignFile和Reset的时候系统报错“E/A Error 103”
然后换用TFileStream和fmOpenRead方式的时候系统报错无法打开指定文件。
我要打开的是一个Dll,是不是跟这个有关系?
不过我想在访问的时候也没有其他程序正在用那个Dll的呀。

源代码如下:
procedure WriteAFile(var f:File;AFileName:String);
var
af:File;
fsize,rs:Integer;
buf:array [0..2047] of Byte;
begin
AssignFile(af,AFileName);
try
Reset(af,1);
fsize:=FileSize(af);
WriteInteger(f,fsize);
while not EOF(af) do
begin
BlockRead(af,buf,SizeOf(buf),rs);
BlockWrite(f,buf,rs);
end;
finally
CloseFile(af);
end;
end;

就是在Reset的时候出错。参数传递完全正常。
...全文
100 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
数字蛋糕 2001-08-19
问题解决了。因为后来换用了TMemoryStream的LoadFromFile就没有问题。
但是我还是觉得很奇怪,因为LoadFromFile方法本来就是通过FileStream来实现的。
  • 打赏
  • 举报
回复
comsun 2001-08-18
看一下DLL的属性,含有只读和系统的会报错。要先改属性。
  • 打赏
  • 举报
回复
appleyao 2001-08-18
{$I-}
忽略I/O错误,由程序来控制
{$I+}
恢复
  • 打赏
  • 举报
回复
数字蛋糕 2001-08-18
可否解释一下{$I+}和{$I-}是什么意思?我对预编译指令不太熟。
不过照上面两种方法试了一下都不行,错误代码依然还是103。
  • 打赏
  • 举报
回复
lanren_me 2001-08-18
up
  • 打赏
  • 举报
回复
qiandeng 2001-08-18
同意


  • 打赏
  • 举报
回复
appleyao 2001-08-18
{$I-}
Reset(af, 1);
{$I+}
  • 打赏
  • 举报
回复
ch81 2001-08-18
Reset(af)就可以了。你试试。我上次传了个参数进去后,就通不过。
Reset默认就是1.
  • 打赏
  • 举报
回复
相关推荐
发帖
Delphi

5122

社区成员

Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
帖子事件
创建了帖子
2001-08-18 05:22
社区公告
暂无公告