读写文件出错,求助!
Private Sub LinkCmd_Click()
Open App.Path & "\cap.jpg" For Binary Access Read As #2
Get #2, 1, SData$
Close #2
Open App.Path & "\got.jpg" For Binary Access Write As #1
Put #1, 1, SData$
Close #1
End Sub
为何上面的程序会出错?把jpg文件换成txt文件就不会出错。不要用别的方法读写文件,用该方法读写文件应该如何改正程序?
问题点数:30、回复次数:5Top
1 楼Plearner(^PloveP^)回复于 2005-05-11 22:38:21 得分 0
加上 SData$=Space(lof(2)) 也不行。
得到的got.jpg会比cap.jpg大,然后该jpg不能显示。
为什么,求助!Top
2 楼sektor(普通动物)回复于 2005-05-11 22:42:37 得分 0
SData$<=================??
or Byte?
that's all
Top
3 楼maplevsred(残桓枫雪)回复于 2005-05-11 23:01:40 得分 30
你要读入的是一个二进制型的文件,但却使用了字符串型的变量。可以使用字节数组来存放读入的二进制数据
Dim s() As Byte
Open "f:\f4.jpg" For Binary Access Read As #2
ReDim s(LOF(2) - 1)
Get #2, 1, s
Close #2
Open "f:\w4.jpg" For Binary Access Write As #1
Put #1, 1, s
Close #1
Top
4 楼Plearner(^PloveP^)回复于 2005-05-12 09:17:16 得分 0
谢谢!顺便再问一下,如果用winsock传输所读取的数据,如果用一字节一字节的传输显然较慢,如何传输比较快。连续不断的传输视频图片。用上面的方法岂不是要
发送端
Dim s() As Byte
Open "f:\f4.jpg" For Binary Access Read As #2
ReDim s(LOF(2) - 1)
Get #2, 1, s
Close #2
for i=1 to lof(2)
winsock1.senddata s(i-1)
next
接收端
先得到文件长度
dim s() as byte
然后redim s(lenoffile-1)
i=0
winsock1.getdata s()
i=i+1
if i=lenoffile then
Open "f:\w4.jpg" For Binary Access Write As #1
Put #1, 1, s
Close #1
endif
这样做是不是速度会减慢很多。
Top
5 楼sektor(普通动物)回复于 2005-05-12 09:21:30 得分 0
上面这个问题你做的太简单了.
for i=1 to lof(2)
winsock1.senddata s(i-1)
next
到网络版看看FAQTop




