本帖最后由 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 字符,这里的测试数字统计估计是没包含空格等其他制表符
|