wsycharles0o 发表于 2010-8-27 13:57:56

回复 15# afan


帮助文件写的是-1
但是无论怎么循环,他都没变,始终是0...

afan 发表于 2010-8-27 14:00:43

回复 16# wsycharles0o


    -1是到尾部了,如果是1就是还有别的错误

wsycharles0o 发表于 2010-8-27 14:51:09

回复 17# afan


它就是读完到尾部了也不设@Error...

republican 发表于 2010-8-27 14:57:00

if @error then exitloop 就是了……

wsycharles0o 发表于 2010-8-27 16:43:35

回复 19# republican


拜托....
就是这样不好用...

republican 发表于 2010-8-27 16:56:12

回复 20# wsycharles0o

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

wsycharles0o 发表于 2010-8-27 17:27:42

回复 21# republican


擦...
我还真人品了...

3mile 发表于 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)

C.L 发表于 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

tianji028 发表于 2010-9-16 10:51:36

au3似乎每执行一次函数都会设置一下@error
页: 1 [2]
查看完整版本: FILE函数相关问题...@Error没变,于是不断复写...