| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
雷速体育发帖软件开发QQ118000023C语言培训|一对一辅导|零基础学编程LightningChart 快速先进的.Net图表控件
共有 410 人关注过本帖
标题:List1.ListCount怎么会是负的?
只看楼主 收藏
ictest
Rank: 2
等 级:论坛游民
帖 子:216
专家分:77
注 册:2010-2-17
结帖率:73.85%
  已结贴   问题点数: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”文件,接在原文件内容的后面写入,该如何编写程序?



附件: 您没有浏览附件的权限,请 登录注册
2018-03-29 09:59
wds1
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:21
帖 子:218
专家分:1193
注 册: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
等 级:版主
威 望:212
帖 子:4209
专家分:25792
注 册: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







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

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