帮忙看看这行语句执行为什么这么慢

fengyin520 2009-01-18 10:21:47
我有一条把表格里每一个格的内容合并存到一个字符串的语句,执行起来速度相当慢,请大家帮我分析一下原因,或者有什么好的方法把表格内容存到一个字符串里,下面是代码,用了一个vsgrid,
Private Sub Form_Load()
Dim i As Integer
Dim strRow(7) As String
Dim t As Long
Dim j As Integer
Dim TestStr As String




For i = 1 To 1000

strRow(0) = i
strRow(1) = i * 2
strRow(2) = i * 3
strRow(3) = i * 4
strRow(4) = i * 5
strRow(5) = i * 6
strRow(6) = i * 7
strRow(7) = i * 8

For j = 0 To 7
VSFlexGrid1.TextMatrix(i, j) = strRow(j)
Next

'就是下面这句代码,加上他是不加他速度的50倍,在我的电脑上都能运行2秒钟。为什么呢。
TestStr = TestStr & strRow(0) & "|" & strRow(1) & "|" & strRow(2) & "|" & strRow(3) & "|" & strRow(4) & "|" & strRow(5) & "|" & strRow(6) & "|" & strRow(7) & "|"


Next

End Sub
...全文
149 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
SYSSZ 2009-01-18
  • 打赏
  • 举报
回复
看错了
SYSSZ 2009-01-18
  • 打赏
  • 举报
回复
TestStr = TestStr & strRow(0) & "|" & strRow(1) & "|" & strRow(2) & "|" & strRow(3) & "|" & strRow(4) & "|" & strRow(5) & "|" & strRow(6) & "|" & strRow(7) & "|"
strRow(0) = i
strRow(1) = i * 2
strRow(2) = i * 3
strRow(3) = i * 4
strRow(4) = i * 5
strRow(5) = i * 6
strRow(6) = i * 7
strRow(7) = i * 8
i没有赋值,不慢才怪!
Simao 2009-01-18
  • 打赏
  • 举报
回复
把 TestStr = TestStr & strRow(0) & "|" & strRow(1) & "|" & strRow(2) & "|" & strRow(3) & "|" & strRow(4) & "|" & strRow(5) & "|" & strRow(6) & "|" & strRow(7) & "|"
改成下面的试试:
for k=0 to 7
TestStr = TestStr & strRow(k) & "|"
next k
pcwe2002 2009-01-18
  • 打赏
  • 举报
回复
这个是典型的字型串拼接问题。先将各个数写入到数组中,然后再用数组的join函数拼接
fengyin520 2009-01-18
  • 打赏
  • 举报
回复
谢谢 pcwe2002 ,用你的方法执行时间几乎和原来不加那条语句的时间一样,非常感谢!
djj315 用你的方法也可以提高速度但时间还是挺长的相对于pcwe2002的方法
hwmys 把把Dim TestStr As String 改为 Dim TestStr As Variant 速度没变化,呵呵
谢谢大家!
hwmys 2009-01-18
  • 打赏
  • 举报
回复
试试把Dim TestStr As String
改为 Dim TestStr As Variant
估计内容太长了!
wynbfqny 2009-01-18
  • 打赏
  • 举报
回复
应该是循环的问题,TEXTSTR最后的结果集会变更相当的长

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧