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

[AU3基础] 读取ini数据存入数组效率慢,ReDim的问题(已解决)

[复制链接]
发表于 2020-4-17 19:21:29 | 显示全部楼层 |阅读模式
本帖最后由 xymc 于 2020-4-18 00:22 编辑

"D:\客户机数据" 里面有几万个帐号.ini ,想读取ini里面的数据储存到数组里面,用for读完要差不多10分钟,有什么办法可以提高下效率
逛了会论坛发现原来是ReDim的问题,循环写入数组时,每增加一行数据用ReDim调整数组大小+1时出现的问题
如果预设数组大小为5w,读取完5w的ini文件只需要60s以内
现在知道是这个问题,但预设的数组毕竟是过大,真实有数据的可能没有5w,怎么删除数组里面空的内容呢?
-----------------------------------------------------------------------------------------------------------------------------------------
找到解决方案了,大概思路如下
预设数组大小为5w
ReDim $zhongduan[50000][7];调整一个已经存在的数组的大小
循环读取ini存入数组时加个计次
读取完所有ini后再用ReDim调整下数组大小就行,多少行数据就调整多大
-----------------------------------------------------------------------------------------------------------------------------------------

这里找到的答案
https://www.autoitx.com/forum.php?mod=viewthread&tid=71667&highlight=%CA%FD%D7%E9
 Local $path = "D:\客户机数据"
        Local $FileList = _FileListToArray($path)
        If Not @error Then
                ;MsgBox(0,"所有的文件\文件夹数量",$FileList[0])
                For $i = 1 To $FileList[0] Step 1
                        Local $ini_path = $path&$FileList[$i]&"\账号.ini","QQ");ini路径
                        If @error Then
                                MsgBox(4096, "", "错误, 读取INI文件失败.")
                        Else
                                For $ii = 1 To $var[0][0]
                                        ;MsgBox(4096, "", "关键字: " & $var[$ii][0] & @CRLF & "值: " & $var[$ii][1])
                                        ;读取到的数据存入数组
                                        ;........
                                Next
                        EndIf
                Next
        EndIf

发表于 2020-4-17 20:23:46 | 显示全部楼层
这种级别的不上数据库 没啥子办法的
发表于 2020-4-17 20:25:51 | 显示全部楼层
先读取文本,放到内存,再正则获取应该快很多?
 楼主| 发表于 2020-4-17 20:42:10 | 显示全部楼层
破帽遮颜 发表于 2020-4-17 20:25
先读取文本,放到内存,再正则获取应该快很多?

有没有相关的例子可以参考下
发表于 2020-4-17 21:46:37 | 显示全部楼层
xymc 发表于 2020-4-17 20:42
有没有相关的例子可以参考下

自己修改一下UDF就可以了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-11-16 08:23 , Processed in 0.074740 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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