找回密码
 加入
搜索
楼主: wsycharles0o

[系统综合] FILE函数相关问题...@Error没变,于是不断复写...

 火.. [复制链接]
 楼主| 发表于 2010-8-27 13:57:56 | 显示全部楼层
回复 15# afan


帮助文件写的是-1
但是无论怎么循环,他都没变,始终是0...
发表于 2010-8-27 14:00:43 | 显示全部楼层
回复 16# wsycharles0o


    -1是到尾部了,如果是1就是还有别的错误
 楼主| 发表于 2010-8-27 14:51:09 | 显示全部楼层
回复 17# afan


它就是读完到尾部了也不设@Error...
发表于 2010-8-27 14:57:00 | 显示全部楼层
if @error then exitloop 就是了……
 楼主| 发表于 2010-8-27 16:43:35 | 显示全部楼层
回复 19# republican


拜托....
就是这样不好用...
发表于 2010-8-27 16:56:12 | 显示全部楼层
回复 20# wsycharles0o

我只能说,我没有问题...

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2010-8-27 17:27:42 | 显示全部楼层
回复 21# republican


擦...
我还真人品了...
发表于 2010-8-27 17:33:12 | 显示全部楼层
经测试,@error=-1无问题。
$file = FileOpen("mbr.bin", 16)
Local $out,$kb
; 检查打开的文件是否可为读
If $file = -1 Then
    MsgBox(0, "错误", "不能打开文件.")
    Exit
EndIf
; 每次读取一个字符,直到文件结束(译注:读中文必须设置为远大于1的值!)(译注的译注(thesnow):ANSI编码中,一个中文为两个字符/字节)
While 1
    $chars = FileRead($file, 1024)
    If @error = -1 Then ExitLoop    
        $out&=StringTrimLeft($chars,2)
        $kb+=1
        ConsoleWrite("KB:"&$kb&@CRLF)
Wend
$wfile=FileOpen("out.bin",18)
FileWrite($wfile,'0x'&$out)
FileClose($wfile)
FileClose($file)
发表于 2010-8-28 13:56:22 | 显示全部楼层
If @error = -1 Then ExitLoop
在这里,我也一直是这样用的,没遇到什么问题
发表于 2010-9-2 15:20:11 | 显示全部楼层
本帖最后由 飞龙三少 于 2010-9-2 15:25 编辑

在你的While循环中,FileRead、FileWrite、ToolTip这3个操作都会设置@Error的,所以你的While循环判断@Error是最后一个操作ToolTip的@Error,而非FileRead的@Error。其实你仔细看看帮助的例子就解决了,每次FileRead后立刻校验@Error,如果FileRead失败就退出循环,读取成功才开始后续操作:
While 1
        $DATA=FileRead($READ,1024)
        ;如果读取到文件结尾或读取失败退出循环
        If @error = 1 Or @error = -1 Then ExitLoop 
        ;读取成功
        FileWrite($WRITE,$DATA)
        $KB=$KB+1
        ToolTip("KB:"&$KB,0,0)
WEnd

评分

参与人数 1金钱 +10 收起 理由
f-r-2006 + 10 正解

查看全部评分

发表于 2010-9-16 10:51:36 | 显示全部楼层
au3似乎每执行一次函数都会设置一下@error
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-20 07:13 , Processed in 0.069314 second(s), 16 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表