vb:我想利用vb调取文本文件中的数据?
2009110901 54425 4042 11748 0003 0008=2009110901 54429 4020 11795 0000 0005=
2009110901 54430 4077 11815 0001 0000=
2009110901 54432 4060 11848 0000 0000=
2009110901 54434 4017 11830 0000 0000=
2009110901 54436 4040 11895 0002 0001=
2009110901 54522 3988 11773 0000 0000=
NNNN
我想读取把第二列里为54429和54432的这两行读出来,其它的不要,应该怎么处理啊?
还有,碰到最后NNNN,我想结束程序,应该怎么办? --------------------编程问答-------------------- 格式是固定的么?如果是,则open for output,do until eof(记录名),逐行读取,判断字符串中的第12位至16位的内容是否是54429或54432 --------------------编程问答-------------------- 只读那两个数据,怎么会碰上 NNNN ?
--------------------编程问答-------------------- 用input line读取每行,用split分割每行字符串为数组ss(),
ss(1)和ss(2)就是你要的,
用if判断标志"NNNN",是就退出循环
代码很简单,自己搜吧 --------------------编程问答-------------------- 更正 input line 为line input --------------------编程问答-------------------- Open "***.***" For Input As #1
Close #1
--------------------编程问答--------------------
估计楼主的 NNNN是表示底下还有很多条数据~ --------------------编程问答-------------------- 上代码,能不能懂看楼主的造化。
Option Explicit
Private Sub Command1_Click()
Const LINEWIDTH& = 40 '如果是 vbLF 定界的,改成 39
Const DATAWIDDH& = 5 '数据是5个字符
Const OFFSET& = 12 '数据从第12个字符开始
Dim iFN&, strTemp$
Dim lVarA&, lVarB&
strTemp = Space(DATAWIDDH)
iFN = FreeFile()
Open "X:\Temp\Test.txt" For Binary As iFN '打开文件
Get iFN, LINEWIDTH * (2 - 1) + OFFSET, strTemp '读第2行
lVarA = CLng(strTemp)
Get iFN, LINEWIDTH * (3 - 1) + OFFSET, strTemp '读第3行
lVarB = CLng(strTemp)
Close iFN
MsgBox lVarA & vbLf & lVarB, 64
End Sub
--------------------编程问答-------------------- 一次性读进 然后用正则表达式匹配:
^[^\s]*?\s(?:54429|54432)\s.*?$--------------------编程问答-------------------- 建意将数据存储在XML文件中,这样比存储在文本文件中要好.
读取文本文件中数据需要一行一行读取,读取的数据出错可能性大. --------------------编程问答--------------------
Private Sub Form_Load()--------------------编程问答-------------------- 中文注释多点好 --------------------编程问答-------------------- Dim strLine As String, strItem() As String
Dim strData$
Dim reg As Object
Dim matchs As Object, match As Object
strData = "2009110901 54425 4042 11748 0003 0008= " & vbCrLf & _
"2009110901 54429 4020 11795 0000 0005= " & vbCrLf & _
"2009110901 54430 4077 11815 0001 0000= " & vbCrLf & _
"2009110901 54432 4060 11848 0000 0000= " & vbCrLf & _
"2009110901 54434 4017 11830 0000 0000= " & vbCrLf & _
"2009110901 54436 4040 11895 0002 0001= " & vbCrLf & _
"2009110901 54522 3988 11773 0000 0000= "
Set reg = CreateObject("vbscript.regexp")
reg.Global = True
reg.IgnoreCase = True
reg.MultiLine = True
reg.Pattern = "^\d+?\s(?:54429|54432)\s.*?$"
Set matchs = reg.Execute(strData)
For Each match In matchs
Debug.Print match.Value
Next
End Sub
Open App.Path & "test.txt" For Input As #1
Do Until EOF(1)
Line Input #1, strLine
If Left(strLine, 4) = "NNNN" Then Exit Do
strItem = Split(strLine, " ")
if Ubound(strItem) Then
If (strItem(1) = 54429) Or (strItem(1) = 54432) Then
Debug.Print strLine
End If
End If
Loop
Close #1
--------------------编程问答--------------------
--------------------编程问答-------------------- 都是强人
Private Sub Command1_Click()
Open "c:\temp\111.txt" For Input As #1
Dim istr As String
Do
Line Input #1, istr
If Split(istr)(1) = 54429 Or Split(istr)(1) = 54432 Then
Debug.Print istr
End If
Loop While Trim(istr) <> "NNNN" Or Not EOF(1)
MsgBox "OK"
End Sub
补充:VB , 基础类