有关文件复制的郁闷。。。
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 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
回答完毕
[解决办法]
疯了~
N个字节不一样
大概是String类型的自动转换
我刚才试验了一下
把myarr的类型改成Byte就可以了
Dim myarr As Byte酱紫
这次没问题了
结帖吧
[解决办法]
用 WINHEX 打开对比 2 个文件看看,不要用记事本打开
[解决办法]
..............................
[解决办法]
用以下演示代码,你可看到Text1中有许多 "? "字符,Text3中有许多 "3F "16进制数
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 Sub
Private Sub Form_Load()
Text1 = " "
Text3 = " "
End Sub
[解决办法]
Byte 数据类型和String 数据类型是不同的数据类型:
Byte 数据类型
Byte 变量存储为单精度型、无符号整型、8 位(1个字节)的数值形式,范围在 0 至 255 之间。
String 数据类型
String 之字符码的范围是 0 到 255。字符集的前 128 个字符(0 到 127)对应于标准的 U.S. 键盘上的字符与符号。这前 128 个字符与 ASCII 字符集中所定义的相同。后 128 个字符(128 到 255)则代表特殊字符,例如国际字符,重音符号,货币符号及分数。String 的类型声明字符为美元号 ($)。
此外你用记事本或写字板打开图形文件会看到空白或乱码,打开文本文件看到的是字符或汉字。