对一个数组变量用二进制方式写入文件,然后读出来就出错了,请高手进来指点!

wdthkyou 2008-08-26 03:30:41
WW(1 To iGrd, 1 To pII) As Single'数组已存有数据了
我写入文件的代码:
Open cWFile For Binary As #pFid
For II = 1 To pGrd
For KK = 1 To pII
Put #pFid, , WW(II, KK)
Next
Next
Close (pFid)
我读数据的代码:
Open cFileWW For Binary As #pFid
For II = 1 To pGrd
For KK = 1 To pII
Get #pFid, , WW(II, KK)
Next
Next
Close (pFid)
为什么WW全是0值!请高手指点,谢谢。
...全文
165 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdthkyou 2008-08-26
  • 打赏
  • 举报
回复
没有问题了,楼上的可行。
yachong 2008-08-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wdthkyou 的回复:]
试了一下,你的代码能通过,可是我的就出现问题了,难道与数组大小有关系,我的是13000x3000
[/Quote]
我试了,这么大的也可以
wdthkyou 2008-08-26
  • 打赏
  • 举报
回复
谢谢你的回复。按照你的意思,我必须将Single类型的WW(II, KK) 转换成Byte字节型,是吗?如何转?
用这种方式好像可行,但不知对不对?
写入文件的代码:
Open cWFile For Binary As #pFid
Put #pFid, , WW
Close (pFid)
读数据的代码:
Open cFileWW For Binary As #pFid
Get #pFid, , WW
Close (pFid)
fvflove 2008-08-26
  • 打赏
  • 举报
回复
对,是的,要考虑.

Put #pFid,II * pII + KK, WW(II, KK) '写数据的时候要写,写入位置 ¦ II * pII + KK 就是位置

WW(II, KK) 的数据类型要是Byte字节型.
wdthkyou 2008-08-26
  • 打赏
  • 举报
回复
Put #pFid,II * pII + KK, WW(II, KK) '写数据的时候要写,写入位置 | II * pII + KK 就是位置
====================================================================================
这里II * pII + KK 是不是需要虑数组类型呀!
wdthkyou 2008-08-26
  • 打赏
  • 举报
回复
试了一下,你的代码能通过,可是我的就出现问题了,难道与数组大小有关系,我的是13000x3000
yachong 2008-08-26
  • 打赏
  • 举报
回复
Dim x(0 To 2, 0 To 5) As Single

Private Sub Command2_Click()
Open "d:\1.txt" For Binary As #1
Dim i As Long, j As Long
For i = 0 To 2
For j = 0 To 5
Get #1, , x(i, j)
Next
Next

Close 1
For i = 0 To 2
For j = 0 To 5
Debug.Print x(i, j)
Next
Next
End Sub

Private Sub Command1_Click()
Open "d:\1.txt" For Binary As #1
Dim i As Long, j As Long
For i = 0 To 2
For j = 0 To 5
Put #1, , x(i, j)
Next
Next
Close 1
End Sub

Private Sub Form_Load()
Dim i As Long
x(0, 0) = 0.1
x(0, 1) = 0.2
x(0, 2) = 0.3
x(0, 3) = 0.4
x(0, 4) = 0.5
x(0, 5) = 0.6
x(1, 0) = 1.1
x(1, 1) = 1.2
x(1, 2) = 1.3
x(1, 3) = 1.4
x(1, 4) = 1.5
x(1, 5) = 1.6
x(2, 0) = 2.1
x(2, 1) = 2.2
x(2, 2) = 2.3
x(2, 3) = 2.4
x(2, 4) = 2.5
x(2, 5) = 2.6
End Sub

这么些没问题啊
wdthkyou 2008-08-26
  • 打赏
  • 举报
回复
谢谢楼上的大虾,再等一会儿,看一看还能再多学点么,呵呵呵。
fvflove 2008-08-26
  • 打赏
  • 举报
回复

WW(1 To iGrd, 1 To pII) As Single'数组已存有数据了
'我写入文件的代码:
Open cWFile For Binary As #pFid
For II = 1 To pGrd
For KK = 1 To pII
Put #pFid,II * pII + KK, WW(II, KK) '写数据的时候要写,写入位置 | II * pII + KK 就是位置
Next
Next
Close (pFid)

'我读数据的代码:
Open cFileWW For Binary As #pFid
For II = 1 To pGrd
For KK = 1 To pII
Get #pFid,II * pII + KK, WW(II, KK) '读数据也一样,要写 读入位置
Next
Next
Close (pFid)

'为什么WW全是0值!请高手指点,谢谢。

wdthkyou 2008-08-26
  • 打赏
  • 举报
回复
已经解决了,写入文件的代码:
Open cWFile For Binary As #pFid
Put #pFid, , WW
Close (pFid)
读数据的代码:
Open cFileWW For Binary As #pFid
Get #pFid, , WW
Close (pFid)

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧