“"e:\1.dat” 檔案大致格式是“ 1 2.2 3.33 4.444”,想要調取“1”,回圈從第一個空格開始調,如果調出的是空格,則往后順延一位,直到調出的不是空格,而是“1”。由于是vb初學者,回圈陳述句還沒有學好,下面是自己搞出的程式,運行一直都是空白,求大俠們指點。
Private Sub Command1_Click()
Dim lngFn As Long, strT As String
lngFn = FreeFile
Open "e:\1.dat" For Binary As #lngFn
strT = Space(LOF(lngFn))
Get #1, , strT
Close #lngFn
Dim a As Long
sArr = Split(strT, vbCrLf)
a = 1
txt1.Text = Split(sArr(0), " ")(a)
For a = 1 To 6
If (txt1.Text = "") Then
End If
Next a
End Sub
uj5u.com熱心網友回復:
按vbCrLf拆成陣列,得到每一行,每一行的資料,再按空格,拆成陣列。
陣列第一個就是1啊。
uj5u.com熱心網友回復:
記得用Trim去掉首尾的空格。uj5u.com熱心網友回復:
Private Sub Command1_Click()
Dim lngFn As Long, strT As String, sArr() As String, i As Long
lngFn = FreeFile
Open "e:\1.dat" For Input As #lngFn
Do Until EOF(lngFn)
Line Input #lngFn, strT
strT = Trim(strT)
Do While InStr(strT, Space(2))
strT = Replace(strT, Space(2), Space(1))
Loop
sArr = Split(strT, Space(1))
If sArr(0) = "1" Then
MsgBox "'1' is found."
Exit Do
End If
Loop
Close #lngFn
End Sub
uj5u.com熱心網友回復:

其實我的資料格式是圖片上的這種,因為我想固定調取第二列cloud的數值,但由于有的數占3位,有的占4位,我用
txt1.Text = Split(sArr(2), " ")(12)時可以調出四位的10.0,但是想要調取三位的9.7,又變成Split(sArr(2), " ")(13)。所以想用循壞陳述句,從FH列后的第一個空格(txt1.Text = Split(sArr(2), " ")(8))開始調,如果是空格就繼續調后一位,如果不是空格就把值賦給txt1.TEXT。求指點~~~~
uj5u.com熱心網友回復:
Do While InStr(strT, Space(2))strT = Replace(strT, Space(2), Space(1))
Loop
將連續的多個空格替換為 1 個空格,然后切分。
uj5u.com熱心網友回復:
其實我覺得你的這個資料格式可以說是“很規范”了,應該是很好處理的。對于讀取到的每一行內容 strT:
Dim strT As String
Dim CV As Double ' CV的型別用String還是Double,按你的需要來定
Dim p1&, p2 As Long
strT = "xxxxxxxx" ' strT 的值為每行資料的內容
p1 = InStr(W, strT, " ")
' 這兒W的值,是指第1列資料FH占用的寬度。
' 比如第1行資料:0的前面有3空格、再加數值0,共4個字符,W就為4;
' 因數值后面還有若干空格,W為5、為6也行,但不要“增加太多”。
p2 = InStr(InStr(p1, strT, "."), strT, " ")
' 取第二列 Cloud 的資料:
CV = Val(Mid$(strT, p1, p2 - p1)) ' 取“數值”值用這句 Double
CV = LTrim$(Mid$(strT, p1, p2 - p1)) ' 取“文本”值用這句 String
uj5u.com熱心網友回復:
6 樓的思路也很好,把檔案當作欄位固定寬度的記錄來處理。其實,若不是為了人工閱讀的“美觀”,欄位間用逗號或制表符(Tab) 分隔,更便于機器處理。甚至可以當作外部資料庫,用 ADO 物件來查詢。
uj5u.com熱心網友回復:
對了,忽然想到,它的這個“記錄”都是固定寬度對齊的,那么對于每一個“欄位”,都可以直接用 Mid$( strT, ps, W) 的形式,把資料“摳出來”,而那幾次 Instr()的函式呼叫是不必要的。
ps 就是從第幾個字符開始,W 就是取多少字符;
只要大概把檔案內容看一下,就可以選擇出比較合理的 ps和W 的值,確保不會把每個欄位的“有效內容”截掉。
然后,配合 Trim$() 或Val() 把“摳出來的資料”處理一下就行了:
如果要“文本結果”就用trim 去掉首尾的空格,如果要“數值結果”就用 Val 轉換成數值。
uj5u.com熱心網友回復:
這么規整的資料,直接trim(mid(行內容變數,起啟位置,長度))
哪列取不出來啊?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/73797.html
標籤:VB基礎類
上一篇:CDO問題
