执行效率咋这么大反差呢?

mthupc 2009-07-30 10:04:58
编了个小程序修改数据文件(源码如下),但执行Command1_Click()时效率好低,速度好慢,还希望朋友们多多指教!
谢谢!
Private Sub Command1_Click()
Dim strTemp As String, strModify As String
strModify = ""
Open App.Path & "\SZLISHI.DATA" For Input As #1
Do While Not EOF(1)
Line Input #1, strTemp
strModify = strModify & strTemp & vbCrLf
If Trim(strTemp) = "COMPDAT" Then
Line Input #1, strTemp
Arrtemp = Split(Trim(strTemp), " ")
If Arrtemp(0) = Trim(Combo1.Text) Then
strTemp = ""
Arrtemp(3) = Combo2.Text: Arrtemp(4) = Combo3.Text
For i = LBound(Arrtemp) To UBound(Arrtemp)
strTemp = strTemp & Arrtemp(i) & Space(1)
Next i
strTemp = strTemp & vbCrLf
End If
strModify = strModify & strTemp & vbCrLf
End If
Loop
Close #1

Open App.Path & "\SZLISHI.DATA" For Output As #1
Print #1, strModify
Close #1
End Sub

Private Sub Form_Load()
Dim strTemp As String
Open App.Path & "\SZLISHI.DATA" For Input As #1
Combo3.AddItem 0
Do
If EOF(1) Then Exit Do
Line Input #1, strTemp
If Trim(strTemp) = "COMPDAT" Then
Line Input #1, strTemp
Arrtemp = Split(Trim(strTemp), " ")
Combo1.AddItem Arrtemp(0)
Combo3.ListIndex = 0
If Val(Arrtemp(4)) > Val(Combo3.Text) Then
Combo3.RemoveItem 0
Combo3.AddItem Arrtemp(4)
End If
End If
Loop
Close #1
maxtemp = Val(Combo3.Text)
Combo3.RemoveItem 0
For i = 1 To maxtemp
Combo2.AddItem Str(i)
Combo3.AddItem Str(i)
Next i
Combo1.ListIndex = 0
Combo2.ListIndex = 0
Combo3.ListIndex = maxtemp - 1
End Sub
...全文
72 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mthupc 2009-07-31
  • 打赏
  • 举报
回复
呵呵,这次给分有点少,从各位朋友,尤其是of123那里,学到了好多!
谢谢!
weiyulin 2009-07-31
  • 打赏
  • 举报
回复

帮顶.....
东方之珠 2009-07-31
  • 打赏
  • 举报
回复
字符串拼接是很慢的。
of123 2009-07-31
  • 打赏
  • 举报
回复
不要做大量的字符串拼接操作,很慢的。

Private Sub Command1_Click()
Dim strTemp As String

Open App.Path & "\SZLISHI.DATA" For Input As #1
Open App.Path & "\tmp.DATA" For Onput As #2
Do While Not EOF(1)
Line Input #1, strTemp
Print #2, strTemp

If Trim(strTemp) = "COMPDAT" Then
Line Input #1, strTemp
Arrtemp = Split(Trim(strTemp), " ")
If Arrtemp(0) = Trim(Combo1.Text) Then
Arrtemp(3) = Combo2.Text: Arrtemp(4) = Combo3.Text
strTemp = Join(Arrtemp(i),Space(1))
Print #2, strTemp
End If
Print #2
End If
Loop
Close #2
Close #1

Kill App.Path & "\SZLISHI.DATA"
Name App.Path & "\tmp.DATA" As App.Path & "\SZLISHI.DATA"
End Sub
mthupc 2009-07-30
  • 打赏
  • 举报
回复
我的疑问是:Form_Load()里执行很快的,但Command1_Click()咋就很慢呢
mthupc 2009-07-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sulipeng007 的回复:]
你修改的目的是什么啊?可以把文件格式举例一下,这样也许会有效率更高的思路。
[/Quote]

就比如下面这两行吧,我想修改COMPDAT下的数据

...
WELSPECS
'E1' 'GROUP' 13 1 1* 'OIL' 3* 'NO' 5* 'STD' /
/

COMPDAT
'B7' 1 15 19 20 20 'OPEN' 2* 0.244 3* 'Z' 1* /
...
打死不掉牙 2009-07-30
  • 打赏
  • 举报
回复
你修改的目的是什么啊?可以把文件格式举例一下,这样也许会有效率更高的思路。

7,762

社区成员

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

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