[已解决]循环向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
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:49 编辑
假如$i=0 to $files的话,Fileexists($file)应该会出问题!
$files是一个数量来的!
先感谢你的回复,我回家试试看! 回复 2# maxkingmax
刚刚点错了,没点回复,我会再加多一个IF来看看行不! $files&$files[$i+1]&"|"
$files[$i + 1]会理所当然地出错。不明白楼主为何使用FileExists进行判断~
楼主所希望的$List1中的数据应该是怎样的? 回复 5# pusofalse
在下也忘记了为什么得加Fileexists了,我现在试试看,我希望$List1中的数值是一个文件,"C:\boot.ini"这样的数值,但如果FileOpenDialog("","","所有文件(*.*)")这样的话,需要添加多个文件时就得不停地按$button1,那多麻烦啊!
所以就加了"4",但当选择文件时,FileOpenDialog返回的就是"目录 文件1|文件2|文件N",从第二个选择的文件开始就没有了路径!!!! If $files = 1 Then
GUICtrlSetData($List1, $file)????
Else 回复 7# rence
这是判断用户选择了多少个文件!
页:
[1]