求助!
现在想要做的是打开一个文本文件,此文本文件有若干行(大于两千),想逐行读取此文本文件,找到待处理的公式并将公式显示出来。(只显示到一次项,即Energy(keV) = 10.200 + 0.457*ch即可)现在运行的时候不报错,但是在打开要处理的文件以后VB窗口就没有任何反应了,想请教一下这段代码有什么问题?是不是进入什么死循环了?在程序行中的一些代码是我从他人的程序中拷贝过来的,我已经用红色标注,但是我不太明白他们的意思,想请各位能否顺便给我解释一下,最好能在后面给出注释,看看能否适合在这里使用?非常感谢!!
待处理的公式:
(此公式前有四位字符为空格)Energy(keV) = 10.200 + 0.457*ch + 0.00E+000*ch^2 + 0.00E+000*ch^3
000*ch^2的意思是0乘以ch的二次方
代码:Private Sub Command1_Click()
MsgBox "是否继续?", vbYesNo
Dim filename1 As String
CommonDialog1.ShowOpen
filename1 = CommonDialog1.FileName
If filename1 = "" Then
MsgBox "请选择文件!"
Exit Sub
End If
Dim gongshi As String
Dim fs As New FileSystemObject
Dim ts As TextStream
Set ts = fs.OpenTextFile(filename1)
Dim ss(3000) As String
Dim tt() As String
Dim rr() As String
Dim i, j As Integer
i = 0
j = 0
While Not ts.AtEndOfLine
ss(i) = ts.ReadLine
i = i + 1
WendWhile j < UBound(ss)
If Left(Trim(ss(i)), 6) = "energy" Then
gongshi = Mid(ss(i), 1, 36)
End If
Wend
End Sub
VB --------------------编程问答-------------------- 就打开文件查找,用得着这么麻烦吗?不用FSO:
Option Explicit--------------------编程问答-------------------- 你好,非常感谢您的解答,我使用了您的代码,可是屏幕没有显示,是不是还需要其他的操作,我是新手一个,还望前辈能够为我解答,谢谢!!
Private Sub Command1_Click()
Dim Fnum As Long, Fbyte() As Byte, arr() As String, GongShi As String, i As Long
' 设置“CancelError”为 True
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
' 设置标志
CommonDialog1.Flags = cdlOFNHideReadOnly
' 设置过滤器
CommonDialog1.Filter = "All Files (*.*)|*.*|Text Files" & "(*.txt)|*.txt"
' 指定缺省的过滤器
CommonDialog1.FilterIndex = 2
' 显示“打开”对话框
CommonDialog1.ShowOpen
' 显示选定文件的名字
Fnum = FreeFile
Open CommonDialog1.FileName For Binary As #Fnum
ReDim Fbyte(0 To LOF(Fnum) - 1)
Get #Fnum, , Fbyte
Close #Fnum
arr = Split(StrConv(Fbyte, vbUnicode), vbCrLf)
For i = 0 To UBound(arr)
If InStr(1, LCase(arr(i)), "energy") > 0 Then
GongShi = arr(i): Exit For
End If
Next
GongShi = Mid(GongShi, 1, 36)
Debug.Print GongShi '最后的公式
Exit Sub
ErrHandler:
' 用户按了“取消”按钮
Exit Sub
End Sub
补充:VB , 基础类