文件访问错误

数字蛋糕 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的时候出错。参数传递完全正常。
...全文
106 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
数字蛋糕 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.

5,386

社区成员

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

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