找回密码
 加入
搜索
查看: 6519|回复: 25

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

 火.. [复制链接]
发表于 2010-8-27 13:17:55 | 显示全部楼层 |阅读模式
好吧....
谁解释一下,这个程序传完文件没有像帮助文件里写的那样SET @Error=1,于是它就在那里不断复写....
HotKeySet("{F8}","QUIT")

Func QUIT()
        Exit
EndFunc

Global $READPATH,$WRITEPATH,$READ,$WRITE,$DATA,$KB=0

$READPATH=InputBox("FILE","Target:")
$WRITEPATH=InputBox("FILE","To:")
$NAME=InputBox("FILE","Name:")

$READ=FileOpen($READPATH,16)
$WRITE=FileOpen($WRITEPATH&$NAME,16+2)

While (@error = 0)
$DATA=FileRead($READ,1024)
FileWrite($WRITE,$DATA)
$KB=$KB+1
ToolTip("KB:"&$KB,0,0)
WEnd

MsgBox(0,"FILE","DONE!")

FileClose($READ)
FileClose($WRITE)
发表于 2010-8-27 13:20:28 | 显示全部楼层
While (@error = 0) 这个@Error 是哪个的@error ..
 楼主| 发表于 2010-8-27 13:23:02 | 显示全部楼层
回复 2# afan
额?
FileRead的...
貌似帮助文件里说FileRead完就会把@Error设为-1
发表于 2010-8-27 13:25:46 | 显示全部楼层
但是你没有告诉程序,让它去读FileRead的@Error

评分

参与人数 2金钱 +30 收起 理由
Duvet + 10
afan + 20

查看全部评分

发表于 2010-8-27 13:27:26 | 显示全部楼层
$file = FileOpen("test.txt", 0)

; 检查打开的文件是否可为读
If $file = -1 Then
    MsgBox(0, "错误", "不能打开文件.")
    Exit
EndIf

; 每次读取一个字符,直到文件结束(译注:读中文必须设置为远大于1的值!)(译注的译注(thesnow):ANSI编码中,一个中文为两个字符/字节)
While 1
    $chars = FileRead($file, 1)
    If @error = -1 Then ExitLoop
    MsgBox(0, "读取的字符:", $chars)
Wend

FileClose($file)
看下帮助里给的例子
 楼主| 发表于 2010-8-27 13:28:18 | 显示全部楼层
回复 4# Ziya


huh?
While(@error=0)不就是这个目的么?
 楼主| 发表于 2010-8-27 13:33:38 | 显示全部楼层
回复 5# Ziya


程序做如下修改,问题依然存在...
while 部分改为:
While 1
        If @error = -1 Then ExitLoop
        $DATA=FileRead($READ,1024)
        FileWrite($WRITE,$DATA)
        $KB=$KB+1
        ToolTip("KB:"&$KB,0,0)
WEnd
其它没变...
发表于 2010-8-27 13:35:47 | 显示全部楼层
本帖最后由 afan 于 2010-8-27 13:40 编辑

2、3行调个个
 楼主| 发表于 2010-8-27 13:37:03 | 显示全部楼层
回复 8# afan


斑竹明示...
发表于 2010-8-27 13:39:40 | 显示全部楼层
Local $_DATA
While 1
        $DATA=FileRead($READ,1024)
        If @error = -1 Then ExitLoop
        $_DATA &= $DATA
        $KB += 1
        ToolTip("KB:"&$KB,0,0)
WEnd
FileWrite($WRITE,$_DATA) ;只写入一次即可
 楼主| 发表于 2010-8-27 13:45:07 | 显示全部楼层
回复 10# afan


额...
问题依旧...
不过不写了...开始无限读了...
 楼主| 发表于 2010-8-27 13:47:12 | 显示全部楼层
回复 10# afan


莫非是版本问题?
WINDOWS XP PROFESSIONAL SP3 2002
AUTOIT v3.3.6.1

不然就是人品问题...
发表于 2010-8-27 13:51:05 | 显示全部楼层
回复 12# wsycharles0o


    莫非 @Error = 1?
 楼主| 发表于 2010-8-27 13:53:51 | 显示全部楼层
回复 13# afan


我的最初程序是while (@error=0)
所以@error是任何其它都会结束......
迫不得已,初步用FILEGETSIZE解决问题...但是依然不知为何@error不变...
发表于 2010-8-27 13:55:52 | 显示全部楼层
While 1
        $DATA=FileRead($READ,1024)
        If @error = -1 Then ExitLoop
        ToolTip(@error & "KB:"&$KB,0,0)
        $KB += 1
WEnd
看看@Error是1还是-1
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-15 02:30 , Processed in 0.113111 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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