关于.exe文件以二进制读写错误

来源:百度知道 编辑:UC知道 时间:2024/05/16 04:30:57
Public a(10) As String

Public Sub command1_click()
Dim k As Single
Open "e:\1.txt" For Binary As #1

k = FileLen("e:\1.txt")
a(0) = Input$(k, #1)
Close #1
Form1.Print a(0)
Open "e:\2.txt" For Binary As #2
Put #2, , a(0)
Close #2

End Sub

这段程序完全能够按照预定进行
把.txt修改为.exe后。(1.exe自己编地,大小10K左右,因此不用数据大小)
能够生成2.exe,但是2.exe不能正常运行,单击后只闪一下dos模拟器的黑框,
Public a(10) As String

Public Sub Du()
Dim k As Single
Open "e:\1.txt" For Binary As #1

k = FileLen("e:\1.exe")
a(0) = Input$(k, #1)
Close #1
Form1.Print a(0)
Open "e:\2.exe" For Binary As #2
Put #2, , a(0)
Close #2

End Sub

对比后发现,2.exe属性里比1.exe少了属性,版本,等内容

大家看看我该如何办,提提意见
谢谢两位,两位回答都正确。但是只能选一个最佳答案,
所以也很为难,只好按时间顺序。希望能够理解, 谢谢一○○度 与 a6essaw!

'读写非文本文件的数据,要用二进制数组并配合 Get,Put 语句进行。
Private Sub Command1_Click()
Dim k As Long, a() As Byte, F1 As String, F2 As String

F1 = "e:\1.exe"
F2 = "e:\2.exe"

k = FileLen(F1)
ReDim a(1 To k)
Open F1 For Binary As #1
Get #1, , a '将文件数据全部读入二进数组 a
Close #1

If Dir(F2, 7) <> "" Then
SetAttr F2, 0
Kill F2 '先删除同名文件
End If

Open F2 For Binary As #2
Put #2, , a
Close #2
End Sub

不要用String啊,二进制用byte数组
按你这么改出来的就是把二进制的文件改转化成字符串了
我给你改了一下

Public a() As byte

Public Sub Du()
Dim k As Long
Open "e:\1.exe" For Binary As #1

k = FileLen("e:\1.exe")
ReDim a(k) As Byte
Get #1, , a
Close #1
Form1.Print a(0)
Open "e:\2.exe" For Binary As #2
P