找回密码
 加入
搜索
查看: 3527|回复: 4

如何自定义函数返回一个数组

[复制链接]
发表于 2008-8-10 20:05:58 | 显示全部楼层 |阅读模式
dim $i = 0
$x = _filelist("c:\windows")
msgbox(0,"",$X)
Func _filelist($searchdir)
        $search = FileFindFirstFile($searchdir & "\*.*")
        If $search = -1 Then Return -1
        While 1
                $file = FileFindNextFile($search)
                If @error Then
                        FileClose($search)
                        Return -1
                ElseIf $file = "."  Or $file = ".."  Then
                        ContinueLoop
                ElseIf StringInStr(FileGetAttrib($searchdir & "\" & $file), "D") Then
                        _filelist($searchdir & "\" & $file)
                EndIf
                If StringRight($file, 4) = ".exe"  Then
                        $i += 1
                        ;FileWriteLine(@ScriptDir&"\file.txt", $searchdir & "\" & $file & @CRLF)
return $searchdir & "\" & $file
                EndIf
        WEnd
EndFunc   ;==>_filelist

return $searchdir & "\" & $file  这里只能返回搜索到的第一个文件,之后的文件就无法返回,有谁能指导一下?

[ 本帖最后由 itljl 于 2008-8-11 18:36 编辑 ]
发表于 2008-8-10 20:25:55 | 显示全部楼层
可以这样
但有限制,数组最多1600万个元素,递归最多384层
#include <array.au3>
Global $tmp[1]
dim $i = 0
$x = _filelist("d:\aaa",$tmp)
_ArrayDisplay($tmp)
Func _filelist($searchdir,ByRef $tmp)
       
        $search = FileFindFirstFile($searchdir & "\*.*")
        If $search = -1 Then Return -1
        While 1
                $file = FileFindNextFile($search)
                If @error Then
                        FileClose($search)
                        Return -1
                ElseIf $file = "."  Or $file = ".."  Then
                        ContinueLoop
                ElseIf StringInStr(FileGetAttrib($searchdir & "\" & $file), "D") Then
                        _filelist($searchdir & "\" & $file,$tmp)
                EndIf
                If StringRight($file, 4) = ".exe"  Then
                        $i += 1
                        ;FileWriteLine(@ScriptDir&"\file.txt", $searchdir & "\" & $file & @CRLF)
_ArrayAdd($tmp,$searchdir & "\" & $file)
$tmp[0]+=1
                EndIf
        WEnd
EndFunc   ;==>_filelist
 楼主| 发表于 2008-8-10 23:29:53 | 显示全部楼层
谢谢,

可是,天,为什么会有这样的限制。搜索文件的目录这个递归很容易就超出384层
发表于 2008-8-11 18:23:55 | 显示全部楼层
请改标题为已解决!,谢谢

[ 本帖最后由 pcbar 于 2008-8-11 21:03 编辑 ]
发表于 2015-10-15 07:49:50 | 显示全部楼层
这个很有用,谢谢超版
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-28 20:14 , Processed in 0.087011 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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