找回密码
 加入
搜索
查看: 6113|回复: 14

[效率算法] 请问各位 AU3 能把搜索到的文件字符串存放在一个数组里吗?

 火.. [复制链接]
发表于 2014-1-9 13:47:08 | 显示全部楼层 |阅读模式
一般的搜索文件都是把搜索结果写入到TXT中来存放;那么能直接存放到数组中呢?

例如这样

Local $hSearch = FileFindFirstFile("*.*")

; 检查搜索是否成功
If $hSearch = -1 Then
        MsgBox(4096, "错误", "没有文件/目录 匹配搜索")
        Exit
EndIf

While 1
        Local $sFile = FileFindNextFile($hSearch)  //开始搜索 - 这里能否把搜索到的所有文件存放到一个数组里面呢?应该怎么做呢?
        If @error Then ExitLoop  //如果空目录就退出循环

        MsgBox(4096, "找到的文件:", $sFile) //返回显示搜索到的文件名
WEnd

; 关闭搜索句柄
FileClose($hSearch)
发表于 2014-1-9 14:19:26 | 显示全部楼层
用一个变量 $sFiles 持续连接新的文件名,比如 $sFiles &= '|' & $sFile
最末用相关函数分割一下就行了。

如果先声明一个数组再即时赋值给其元素也行,只不过大小需要在需要的时候进行 ReDim 调整。

评分

参与人数 1金钱 +60 收起 理由
魔导 + 60 A 大还是一如既往的热心

查看全部评分

发表于 2014-1-9 14:28:17 | 显示全部楼层
回复 1# 不死帝国
这么做会弹死你的
 楼主| 发表于 2014-1-9 15:25:09 | 显示全部楼层
回复 3# netegg


    我用意不在MSGBOX。。。元老;你懂我的意思吗?
 楼主| 发表于 2014-1-9 15:29:21 | 显示全部楼层
回复 2# afan


    我想以例如:$sFiles[] 这种方式存放;以后调用时就直接 $sFiles[0] ;$sFiles[1] ...

看帮助文档都是静态的数组,所以不明白怎么动态数组把搜索到的字符信息存入一个动态数组变量里
发表于 2014-1-9 19:40:22 | 显示全部楼层
楼主看来够狠,似乎必须上全代码才行?
我替2楼A大流汗了!
发表于 2014-1-9 20:12:58 | 显示全部楼层
楼主看来够狠,似乎必须上全代码才行?
我替2楼A大流汗了!
user3000 发表于 2014-1-9 19:40



    看TA的眼神就知道够狠,还很严肃…
发表于 2014-1-9 21:53:43 | 显示全部楼层
回复 7# afan
绝对没有我的眼神萌可爱吧?哈哈
 楼主| 发表于 2014-1-10 14:03:23 | 显示全部楼层
二楼大神的意思我是知的;是把变量内的每循环一次就放入到一个新变量里存着;如此下去...我是想知道有没有变量数组这种东西,例如 delphi 声明一个数组字符串变量那样;谢谢大家

如:

var
  List:TStringAydArray; //这就是一个数组变量;不知AU3上是如何
发表于 2014-1-10 14:33:22 | 显示全部楼层
Local $hSearch = FileFindFirstFile("*.*"), $sAll = ''

; 检查搜索是否成功
If $hSearch = -1 Then
        MsgBox(4096, "错误", "没有文件/目录 匹配搜索")
        Exit
EndIf
While 1
        Local $sFile = FileFindNextFile($hSearch)
        If @error Then ExitLoop
        $sAll &= '|' & $sFile
WEnd
FileClose($hSearch)

If $sAll = '' Then Exit

Local $aFiles = StringSplit($sAll, '|', 2)        ;这里直接得到数组了
$aFiles[0] = UBound($aFiles) - 1
#include <Array.au3>
_ArrayDisplay($aFiles, '')
 楼主| 发表于 2014-1-10 19:10:01 | 显示全部楼层
回复 10# afan


    首先谢谢大神解答;虽然是目的是达到;原来AU3没有数组变量;还是要自己去让它变成数组。
我一直以为会像 delphi ;C++ 之类可以直接声明一个数组变量直接可以把字符串放到里面。
发表于 2014-1-10 19:13:09 | 显示全部楼层
回复  afan


    首先谢谢大神解答;虽然是目的是达到;原来AU3没有数组变量;还是要自己去让它变成数 ...
不死帝国 发表于 2014-1-10 19:10



    那就是2#的下面那种方式…

Dim $a[1000]
...
$a[1] = file
...
$a[100] = file
Redim $a[101]
发表于 2014-1-10 22:20:23 | 显示全部楼层
回复 11# 不死帝国


    语言之间是会有些不一样的     习惯了什么就会惯用那种思维
发表于 2014-1-15 16:14:38 | 显示全部楼层
dim $x =1
dim $a[0] = $x
.......
$x+=1
redim $a[0]=$x
剩下的自己处理
发表于 2014-1-15 21:37:10 | 显示全部楼层
_FileListToArray 不知道这个行不行
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-1 07:12 , Processed in 0.083499 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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