Type Dog
W As Long
H As Long
End Type
Sub 存結構體文本檔案()
Dim DogPoint As Dog
Open "d:\test.txt" For Binary Access Write As #1
For I = 1 To 10
With DogPoint
.W = I
.H = I * 2
End With
Put #1, , DogPoint
Next
Close
End Sub
這樣保存的結構體,用vbs讀怎么寫?(注意不是VB,也不是VBA,是VBS的讀文本寫法.)
uj5u.com熱心網友回復:
vbs直接用Scripting.FSO去讀就好了。uj5u.com熱心網友回復:
結構體存為文本后,數值就變成了類似記憶體的東西,大約是4個位元組代表一個數值,然后還有什么高低進位,還有小數部分的處理,不能簡單讀出來就可以用啊.uj5u.com熱心網友回復:
你貼出來的那段代碼是VB6,還是VBS的?如果是VBS的,既然能用Binary寫入,難道不能以Binary讀取?
uj5u.com熱心網友回復:
上面的代碼是vb或vba代碼,,,vbs是沒有結構體的所以怎么存的,怎么取實作不了.
uj5u.com熱心網友回復:
那段代碼,寫入檔案的結果并不是“文本格式”的。
因此不能“用文本方式把原始數值讀取出來”。
查了下資料,VBS不支持“二進制方式”讀寫檔案,也不支持“自定義資料型別(結構體)”。
要讀取“二進制資料”,可以用Adodb.Stream物件來操作;
但要“還原資料”,只有根據“結構體成員”的特點,按位元組值乘以相應的倍數再累加的方式來處理了。
不過由于VBS的限制,只能處理以“整數”方式寫入的二進制資料。
否則,如果要處理Single或Double型別的,又得繞個彎彎去呼叫API來實作了。
uj5u.com熱心網友回復:
當然,那個“結構體”的成員,也只有拆分成單個的變數,或者用“陣列”來表示了。uj5u.com熱心網友回復:
電腦記憶體或檔案內容或傳輸內容只是一個一維二進制位元組陣列及其對應的二進制地址;人腦才將電腦記憶體或檔案內容或傳輸內容中的這個一維二進制位元組陣列及其對應的二進制地址的某些部分看成是整數、有符號數/無符號數、浮點數、復數、英文字母、阿拉伯數字、中文/韓文/法文……字符/字串、匯編指令、函式、函式引數、堆、堆疊、陣列、指標、陣列指標、指標陣列、陣列的陣列、指標的指標、二維陣列、字符點陣、字符筆畫的坐標、黑白二值圖片、灰度圖片、彩色圖片、錄音、視頻、指紋資訊、身份證資訊……
推薦使用WinHex軟體查看硬碟或檔案或記憶體中的原始位元組內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/66951.html
標籤:VB基礎類
