标题:List1.ListCount怎么会是负的?
只看楼主
ictest
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:325
专家分:114
注 册:2010-2-17
结帖率:69.81%
已结贴  问题点数:10 回复次数:2 
List1.ListCount怎么会是负的?
我的程序见附件,运行后双击文件框中的“001.2530R1-8026490-01”文件,稍等片刻,可得结果。

问题1:运行完毕后 List1.ListCount 怎么会是负的,这样我就不能逐条读取List1中的内容(For i = 0 To List1.ListCount - 1);
问题2:能否加快运行速度?
问题3:想把List1中的内容逐条再写进“001.2530R1-8026490-01”文件,接在原文件内容的后面写入,该如何编写程序?


UF2OP.rar (12.49 KB)

搜索更多相关主题的帖子: 运行 文件 内容 For 速度 
2018-03-29 09:59
wds1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:49
帖 子:393
专家分:2025
注 册:2016-3-10
得分:5 
List1.ListCount为整型,最大32767,超过了就会变负数。
 list1控件只是为了显示简短的列表,大的列表显示一般都是利用数据库或者定长文本,之后分段前端显示。
 建议临时数据用txt或内存数组,显示采用滚动条,每次显示1页。这样写入显示就不存在问题了。
 
 速度慢是由于list1分配的存储区满了,之后又重新对此分配造成,你用内存或者文本缓存就会快了。






[此贴子已经被作者于2018-3-29 11:35编辑过]

2018-03-29 11:26
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:5 
问题1:运行完毕后 List1.ListCount 怎么会是负的,这样我就不能逐条读取List1中的内容(For i = 0 To List1.ListCount - 1);

原因是 行数超过了 list1 的最大行数 32768 行了,所以就得到一个负数。
要解决这个问题,很简单,使用API函数读 LIST1 的行数,得到的范围是 long 值。

问题2:能否加快运行速度?
你代码里,保存临时变量的都是使用的 控件 或 Variant ,改吧,全部改时简单变量。
如 字符串,就保存到 string 类型的数据里,数值,整数使用 long ,小数,使用 Single 。
d2 = ""
d2 = d2 & Right("0" & Hex(c2), 2)
Text1.Text = Text1.Text & d2 & ""

HEX 函数能直接处理 long 值,所以必要使用一个循环,一个字节一个字节的读。可以直接读 integer

二个字节,转成 integer 最简单的方法是 高位字节 *256 + 低位字节 ,可以都使用 十进制数据来运算。
Seek #1, 55
Get #1, , c2   
i2=c2*256        '这里要测试第一个读到的是高位,还是低位。
Get #1, , c2
i2=i2+c2
Text1.Text = Text1.Text & i2 & ""


想把List1中的内容逐条再写进“001.2530R1-8026490-01”文件,接在原文件内容的后面写入,该如何编写程序?
新建临时文件 ,先读原文件 ,把内容逐一写入,然后再接着写 新内容。
写完后,删原文件 ,把临时文件改名字为 原文件。
不知道文件格式,没看代码的情况下,这个是通用处理方法。


授人于鱼,不如授人于渔
早已停用QQ了
2018-03-29 12:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-485637-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013887 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved