我把資料po上來,用UltraEdit開啟 ,其中兩筆
這跟我原po的資料類似,只是位置不同
第一筆
00000000h: AB A2 A7 51 AA 69 AF 53 20 20 20 20 20 20 20 20 ; 哈利波特
00000010h: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;
00000020h: 20 20 20 20 20 20 20 20 AD 5E A4 E5 AA A9 20 20 ; 英文版
00000030h: 20 20 20 20 20 20 20 20 33 32 30 32 30 34 ; 320204
第二筆
00000000h: A5 78 C6 57 A1 49 A4 48 B1 A1 A8 FD 20 20 20 20 ; 台灣!人情味
00000010h: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;
00000020h: 20 20 20 20 20 20 20 20 A4 A4 A4 E5 20 20 20 20 ; 中文
00000030h: 20 20 20 20 20 20 20 20 33 32 30 32 30 35 ; 320205
像是這樣的資料,我用記事本開啟時
書名 到 語言 到 書號 中間會有空格
但是用vb讀進去號,是書名接語言接書號沒有空格,用msgbox會出現"哈利波特英文版320204"
怎麼抓出 書名,語言,書號
謝謝了!
讀取檔案至陣列,這(應該)很簡單不多說
b(9) <- 假設這是放資料的10個byte
逐行檢查b(0)~b(9)是否<128 (十六進位&h80)
若<128則做單byte字
若>=128則與下一個位元組合做雙byte字
若=0直接跳出迴圈
if b(j) = 0 then
exit do '這邊看你外層迴圈是用do還是其他的
elseif b(j) < 128 then
s = s & Chr(b(j))
else
s = s & Chr(b(j) + 256*CInt(b(j)) )
end if
大概像這樣吧
可能要改用ChrW, 看你的原始格式是怎麼存的
要不也可以去網路上找模組, 有直接位元組陣列轉字串的
.Net更簡單
看樓主後來提供的檔案內容, 沒有跳出字元, 用Type + Binary讀取即可
Private Type book
name As String * 40
edition As String * 16
id As String * 6
End Type
Dim myBook As book
Open "C:\0.txt" For Binary As #1
Get #1, , myBook
Close #1
Text1.Text = myBook.name
Text2.Text = myBook.edition
Text3.Text = myBook.id
要注意Trim對定長字串無效, 去空格函式要自己寫
其實可以用 ADO 物件去操作,會更快而且有效率,程式也好管理
如下範例
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim ConnStr As String
ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=abc.txt;Extended Properties='text;FMT=Delimited;"
With conn
.Mode = adModeShareExclusive
.Open ConnStr
End With
Set rs.ActiveConnection = conn
With rs
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
End With
關鍵在 ADO Connection String,只要成功連接就可以用資料庫方式操作
內文搜尋





























































































