xyhqqaa 发表于 2012-3-16 14:05:39

搜索文件内代码$stt=$array[UBound($array)-1]求解释

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>
#NoTrayIcon
$Form1 = GUICreate("递归遍历文件", 660, 369, 191, 121)
$List1 = GUICtrlCreateList("", 0, 8, 649, 266)
$Button1 = GUICtrlCreateButton("查找文件名演示", 248, 280, 153, 33, 0)
$Button2 = GUICtrlCreateButton("查找后缀名文件演示", 32, 280, 161, 33, 0)
$Button3 = GUICtrlCreateButton("遍历所有文件演示", 448, 280, 153, 33, 0)
$Label1 = GUICtrlCreateLabel("搜索状态", 16, 336, 636, 17)
GUISetState(@SW_SHOW)

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case$Button3
                        GUICtrlSetData($Label1,"搜索中....")
                        $patch="c:\"
                        seachfile($patch,"*");;;;;;;;;;;遍历所有文件
                        GUICtrlSetData($Label1,"搜索完成")               
                Case$Button2
               
                        GUICtrlSetData($Label1,"搜索中....")
                        $patch="c:\"
                        seachfile($patch,"*","dll");;;;演示查找DLL后缀名文件;
                        GUICtrlSetData($Label1,"搜索完成")
                       
                Case$Button1
                        GUICtrlSetData($Label1,"搜索中....")
                        $patch="c:\"
                        seachfile($patch,"*","explorer.exe");;;;;;;;;查找文件名       
                        GUICtrlSetData($Label1,"搜索完成")
       
EndSwitch
       
WEnd

Func seachfile($patch,$str,$mask="")
Local $search,$file,$array,$array2,$stt,$stt2
$search = FileFindFirstFile($patch&$str)
If $searchThen
While 1       
        $file = FileFindNextFile($search)
        If @error Then ExitLoop
        $array=StringSplit($file,".")
        $array2=StringSplit($file,"/")
        $stt=$array
        $stt2=$array2
        if $mask<>"" Then
       if $stt=$maskor $stt2=$mask Then
                   GUICtrlSetData($List1,$patch&$file)               
                   GUICtrlSetData($Label1,$patch&$file)
           EndIf          
   Else          
                GUICtrlSetData($List1,$patch&$file)       
                GUICtrlSetData($Label1,$patch&$file)
        EndIf               
                if FileChangeDir( $patch&$file)=1 and $file<>"." and $file<>".." Then
                        seachfile($patch&$file&"\",$str,$mask)                               
EndIf

WEnd
FileClose($search)
EndIf

EndFunc

这是某大哥写的搜索文件的例子。。。小弟新手。。对其中有些不明白。。求高人解释$array=StringSplit($file,".")
        $array2=StringSplit($file,"/")
        $stt=$array
        $stt2=$array2
这该如何解释。。。用法?

veket_linux 发表于 2012-3-16 14:05:40

$file里存放的字符串 用 .来分割 成数组 $array

比如$file = "www.baidu.com"
$array = StringSplit($file,".")
这样就得到 $array = 3 , 拆成了几段
$array = "www"
$array = "baidu"
$array = "com"

同理 $array2=StringSplit($file,"/") 是用/来分割
UBound 函数用来得到 数组维度的大小.
例如
Dim $array 定义一个含有10个元素的一位数组 ($array、$array、.......、$array)
UBound($array) 即得到 10

所以$stt=$array
就是 把数组 $array 的最后一个元素的值 给$str

gb23 发表于 2014-5-3 23:16:47

非常谢谢。正迷茫中!解释的很清楚,懂了!谢谢、!真诚的!

沉默的斗鱼 发表于 2017-8-3 11:08:16

谢谢大大们的帮助
页: [1]
查看完整版本: 搜索文件内代码$stt=$array[UBound($array)-1]求解释