dim myarr as string*1
dim i as long
open "d:\1.jpg" for binary as #1
open "d:\2.jpg" for binary as #2
for i=1 to lof(1)
get#1,1,myarr
put#2,1,myarr
next
close#1,#2
以上代码能把1.jpg复制成2.jpg,1,2的字节数大小都是一致的。但是为什么⒉jpg无法显示用以上方法复制文本是可以正常显示的
请来的同志不要给我介绍文件复制的方法,我会,我用byte数组的方式复制文件都可以正常使用。。
我的问题是上面的复制,为什么导致复制出来的文件(如:jpg,mp3,exe等)失效
dim i as long
open "d:\1.jpg" for binary as #1
open "d:\2.jpg" for binary as #2
for i=1 to lof(1)
get#1,1,myarr
put#2,1,myarr
next
close#1,#2
以上代码能把1.jpg复制成2.jpg,1,2的字节数大小都是一致的。但是为什么⒉jpg无法显示用以上方法复制文本是可以正常显示的
请来的同志不要给我介绍文件复制的方法,我会,我用byte数组的方式复制文件都可以正常使用。。
我的问题是上面的复制,为什么导致复制出来的文件(如:jpg,mp3,exe等)失效
dim myarr as string*1
dim i as long
open "d:\1.jpg" for binary as #1
open "d:\2.jpg" for binary as #2
for i=1 to lof(1)
get#1,1,myarr'这2句写错了,不应该是get#1,1,myarr,应该是get#1,i,myarr
put#2,1,myarr'put#2,i,myarr
next
close#1,#2
回答完毕
Dim myarr() As Byte Open "d:\1.jpg" For Binary As #1
ReDim myarr(LOF(1) - 1) Open "d:\2.jpg" For Binary As #2 Get #1, , myarr
Put #2, , myarr Close #1, #2
N个字节不一样
大概是String类型的自动转换
我刚才试验了一下
把myarr的类型改成Byte就可以了
Dim myarr As Byte酱紫
这次没问题了
结帖吧
Dim myarr as Byte
因为ASCII码在0-127能用记事本阅读,而128-255值的ASCII码无法在记事本阅读,回写文件时出错,以至造成与原文件不一致。
但是我复制txt文件的时候,所有字符都能阅读
Option Explicit
Dim i As Integer
Dim j As Integer
Dim str As String
Dim str2 As String
Dim HData As String
Private Sub Command1_Click()
For i = 0 To 255
Text1 = Text1 & ChrW(i)
Next
str = Text1.Text
Text2 = Len(str)
For j = 1 To 255
str2 = Mid(str, j, 1)
Text4 = str2
If Len(Hex(Asc(str2))) = 1 Then
HData = HData & "0" & Hex(Asc(str2)) & " "
Else
HData = HData & Hex(Asc(str2)) & " "
End If
Next
Text3 = HData
End SubPrivate Sub Form_Load()
Text1 = ""
Text3 = ""
End Sub
到底string*1和byte有何不同。也就是说,复制之后文件大小不变,而部分数据改变,
是什么原因导致了这部分数据的改变?为什么偏偏就只是一部分数据改变,而不是全部??
Byte 数据类型
Byte 变量存储为单精度型、无符号整型、8 位(1个字节)的数值形式,范围在 0 至 255 之间。String 数据类型
String 之字符码的范围是 0 到 255。字符集的前 128 个字符(0 到 127)对应于标准的 U.S. 键盘上的字符与符号。这前 128 个字符与 ASCII 字符集中所定义的相同。后 128 个字符(128 到 255)则代表特殊字符,例如国际字符,重音符号,货币符号及分数。String 的类型声明字符为美元号 ($)。此外你用记事本或写字板打开图形文件会看到空白或乱码,打开文本文件看到的是字符或汉字。
顿悟。。
谢谢各位兄弟。