找回密码
 加入
搜索
查看: 3239|回复: 7

[AU3基础] [已解决]循环向list添加数值后,自动退出了????

  [复制链接]
发表于 2010-2-13 00:48:31 | 显示全部楼层 |阅读模式
本帖最后由 天堂泪吻泪 于 2010-2-14 16:12 编辑

不知道为什么,选择了多文件,并且向list添加了数值,但自动退出了????还出现假死????
出现了以下提示:
"
If FileExists($files[$i]) Then GUICtrlSetData($List1,$files[1]&$files[$i+1]&"|")
If FileExists($files[$i]) Then GUICtrlSetData($List1,$files[1]&^ ERROR
"
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 434, 198, 209, 182)
$List1 = GUICtrlCreateList("", 8, 8, 313, 175)
$Button1 = GUICtrlCreateButton("Button1", 328, 16, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                                Case $Button1
                                       $file=FileOpenDialog("请选择文件:",@HomeDrive,"所有文件 (*.*)",4)
                               $files=StringSplit($file,"|")
                               For $i=1 To $files[0]
                       If FileExists($files[$i]) Then GUICtrlSetData($List1,$files[1]&$files[$i+1]&"|")
                              ;MsgBox(0,"",$files[1]&$files[$i+1])
                               Next        
        EndSwitch
WEnd
问题已经解决了,并对后面的进行了不少修改,下面就可以了!
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 434, 198, 209, 182)
$List1 = GUICtrlCreateList("", 8, 8, 313, 175)
$Button1 = GUICtrlCreateButton("Button1", 328, 16, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Button1
        $file = FileOpenDialog("请选择文件:", @HomeDrive, "所有文件 (*.*)", 4)
                        $files = StringSplit($file, "|")
                        If $files[0] = 1 Then
                                GUICtrlSetData($List1, $file)
                        Else
                                For $i = 1 To $files[0]
                                        If $i <> $files[0] Then
                                                        If StringLen($files[1])=3 Then
                                                        $var = $files[1] & $files[$i + 1]
                                                        ;MsgBox(0,"",$var)
                                                        Else
                                                        $var=$files[1]&""&$files[$i+1]
                                                EndIf
                                                GUICtrlSetData($List1, $var & "|")
                                        EndIf                                        
                                Next
                        EndIf
        EndSwitch
WEnd

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2010-2-13 08:45:35 | 显示全部楼层
For $i=1 To $files[0]
                        If FileExists($files[$i]) Then GUICtrlSetData($List1,$files[1]&$files[$i+1]&"|")
                               Next  
问题出在这 files[$i+1] 最后一个文件肯定会超出数组的范围 你看一下,是要使用

  For $i=1 To $files[0]
                        If FileExists($files[$i]) Then GUICtrlSetData($List1,$files[1]&$files[$i]&"|")
                               Next  

还是
  For $i=0 To $files[0]
                        If FileExists($files[$i]) Then GUICtrlSetData($List1,$files[1]&$files[$i+1]&"|")
                               Next
 楼主| 发表于 2010-2-13 11:48:38 | 显示全部楼层
本帖最后由 天堂泪吻泪 于 2010-2-13 11:49 编辑

假如$i=0 to $files[0]的话,Fileexists($file[0])应该会出问题!
$files[0]是一个数量来的!

先感谢你的回复,我回家试试看!
 楼主| 发表于 2010-2-13 11:55:48 | 显示全部楼层
回复 2# maxkingmax


    刚刚点错了,没点回复,我会再加多一个IF来看看行不!
发表于 2010-2-13 17:03:13 | 显示全部楼层
$files[1]&$files[$i+1]&"|"

$files[$i + 1]会理所当然地出错。不明白楼主为何使用FileExists进行判断~
楼主所希望的$List1中的数据应该是怎样的?
 楼主| 发表于 2010-2-14 15:15:08 | 显示全部楼层
回复 5# pusofalse


  在下也忘记了为什么得加Fileexists了,我现在试试看,我希望$List1中的数值是一个文件,"C:\boot.ini"这样的数值,但如果  FileOpenDialog("","","所有文件(*.*)")这样的话,需要添加多个文件时就得不停地按$button1,那多麻烦啊!

所以就加了"4",但当选择文件时,FileOpenDialog返回的就是"目录 文件1|文件2|文件N",从第二个选择的文件开始就没有了路径!!!!
发表于 2010-4-12 14:42:11 | 显示全部楼层
If $files[0] = 1 Then

                                GUICtrlSetData($List1, $file)  ????

                        Else
 楼主| 发表于 2010-4-14 01:22:55 | 显示全部楼层
回复 7# rence


    这是判断用户选择了多少个文件!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-13 16:13 , Processed in 0.081188 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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