天堂泪吻泪 发表于 2010-2-13 00:48:31

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

本帖最后由 天堂泪吻泪 于 2010-2-14 16:12 编辑

不知道为什么,选择了多文件,并且向list添加了数值,但自动退出了????还出现假死????
出现了以下提示:
"
If FileExists($files[$i]) Then GUICtrlSetData($List1,$files&$files[$i+1]&"|")
If FileExists($files[$i]) Then GUICtrlSetData($List1,$files&^ 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
                     If FileExists($files[$i]) Then GUICtrlSetData($List1,$files&$files[$i+1]&"|")
                            ;MsgBox(0,"",$files&$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 = 1 Then
                                GUICtrlSetData($List1, $file)
                        Else
                                For $i = 1 To $files
                                        If $i <> $files Then
                                                        If StringLen($files)=3 Then
                                                        $var = $files & $files[$i + 1]
                                                        ;MsgBox(0,"",$var)
                                                        Else
                                                        $var=$files&"\"&$files[$i+1]
                                                EndIf
                                                GUICtrlSetData($List1, $var & "|")
                                        EndIf                                       
                                Next
                        EndIf
        EndSwitch
WEnd

maxkingmax 发表于 2010-2-13 08:45:35

For $i=1 To $files
                        If FileExists($files[$i]) Then GUICtrlSetData($List1,$files&$files[$i+1]&"|")
                               Next
问题出在这 files[$i+1] 最后一个文件肯定会超出数组的范围 你看一下,是要使用

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

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

天堂泪吻泪 发表于 2010-2-13 11:48:38

本帖最后由 天堂泪吻泪 于 2010-2-13 11:49 编辑

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

先感谢你的回复,我回家试试看!

天堂泪吻泪 发表于 2010-2-13 11:55:48

回复 2# maxkingmax


    刚刚点错了,没点回复,我会再加多一个IF来看看行不!

pusofalse 发表于 2010-2-13 17:03:13

$files&$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",从第二个选择的文件开始就没有了路径!!!!

rence 发表于 2010-4-12 14:42:11

If $files = 1 Then

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

                        Else

天堂泪吻泪 发表于 2010-4-14 01:22:55

回复 7# rence


    这是判断用户选择了多少个文件!
页: [1]
查看完整版本: [已解决]循环向list添加数值后,自动退出了????