找回密码
 加入
搜索
查看: 1213|回复: 3

用_GUICtrlListView_GetItemCount咋出错了?

[复制链接]
发表于 2009-5-25 15:50:29 | 显示全部楼层 |阅读模式
本帖最后由 hhasee 于 2009-5-26 09:05 编辑

$ListView1 = GUICtrlCreateListView(" 序号| 单号|   S N号|   日期|   时间", 5, 107, 525, 315)

使用$jls = _GUICtrlListView_GetItemCount($ListView1)时,当LISTVIEW里的数大于1000条时怎么得出的数据比实际的小呢??
发表于 2009-5-25 17:59:46 | 显示全部楼层
本帖最后由 lynfr8 于 2009-5-25 18:16 编辑

呵呵
估计你想不到这是AutoIt3的 限制吧
其实我在做'代号autoitscript5.1工程'电子书的时候才发现的
才认真看帮助文件找答案,发现【AutoIt3 限制/默认】提到:MAX_ENVSIZE 32767 ENV 变量(环境变量)的最大字符串数量.  
【常见问题(FAQ)----15. 目前AutoIt v3有什么技术上的局限吗?】也提到一些关于au3限制的内容

能够同时使用的最大变量数量: 没有限制
用户定义函数的最大数量: 没有限制
就是说你可以设置n多个变量,但是每个变量装入数据容器不是无限大的
恰恰是有限制的,就是32767个字符
当你这个变量装满了,就不会再容纳更多后来读取的数据
假设你这个变量你放进去一个循环语句里面
并且另外定义一个$count变量赋值循环一次$count=$count+1
你会发现当容器满了即使这个循环没有报错,而且$count变量还是不断增加
但是这个变量容器已经无法写入了
就是类似你的这种情况啦
呵呵,正所谓十只手指都有长短,这是au3的短处
据说是为了防止数据流过大而导致内存崩溃
顺便给个代码出来,就是我之前做电子书时候整理索引写的
有兴趣的可以下载做个测试就明白了
源码:
 dim $count,$file 
$file = FileOpen("TopicList.txt", 0)

While 1
$line = FileReadLine($file)
$array = StringSplit($line, "=", 1)
$count = $count + 1
for $i = 2 to $array[0]
;msgbox(4096,$i,$array[$i])
$title = $array[UBound($array) - 1]
$link = $array[UBound($array) - 2]
;MsgBox(4096,$i, $Number)
;MsgBox(4096,$i, $link)
Next
$file2 = FileOpen("2.txt", 1)
$a='<a href'&'='
$b='''html/'
$c='.html'''
$d='>'&$title&'</a></br>'
$e=$a&$b&$link&$c&' '&$d
;msgbox(4096,$i,$e)
FileWriteLine($file2, $e)
;msgbox(4096,$i,$count)
TrayTip("次数", $count, 0)
Wend 
运行的次数已经很高了,但是:

其实数据的读取和写入已经停止了

看,需要读取的数据是超出au3可以处理的范围了

另外FileReadLine 一次最大能返回 65534 字符,这里的测试数字统计估计是没包含空格等其他制表符

本帖子中包含更多资源

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

×
发表于 2009-5-25 18:21:53 | 显示全部楼层
至于解决的方法,当时我的思路是‘一个容器装不下就换一个’,就是当报错了就换变量来读取数据
不过当时也没太多时间去写了,),不过感觉有矛盾不知道怎么实现,而且5.1也快结束了,就手工解决了(每读取完一次就删除掉那一部分数据再重新读取,累的双手....)
如果有更好的思路,请指教
 楼主| 发表于 2009-5-26 09:05:21 | 显示全部楼层
原来如此,希望新版时能解决这样的问题!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-11 13:06 , Processed in 0.075709 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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