文件能添加成功,但是用string变量类型获取的内容是空的,用int、long只能获得一些数字,请问要怎么才能完成的取得文件的内容?Private Sub Command1_Click() '获取文件内容
Dim a As String
Open "e:\e.txt" For Binary As #1
Get #1, 1, a
Label1.Caption = a
Close #1
End SubPrivate Sub Command2_Click() '添加文件内容
Dim e As String
Open "e:\e.txt" For Binary As #1
e = Text1.Text
Put #1, 1, e
Close #1
End Sub
Dim a As String
Open "e:\e.txt" For Binary As #1
Get #1, 1, a
Label1.Caption = a
Close #1
End SubPrivate Sub Command2_Click() '添加文件内容
Dim e As String
Open "e:\e.txt" For Binary As #1
e = Text1.Text
Put #1, 1, e
Close #1
End Sub
input #1,a
Label1.Caption = a
Close #1
Dim a() As Byte, i As Long
i = FileLen("e:\e.txt")
ReDim a(i - 1)
Open "e:\e.txt" For Binary As #1
Get #1, , a
Label1.Caption = StrConv(a, vbUnicode)
Close #1
End SubPrivate Sub Command2_Click() '添加文件内容
Dim e() As Byte
Open "e:\e.txt" For Binary As #1
e = StrConv(Text1.Text, vbFromUnicode)
Put #1, 1, e
Close #1
End Sub
你是对“Command2_Click() 中把 Text1 中的内容输出到文件中,但 Command1_Click() 中却没读取到任何字符”感到奇怪吧!
其实是这么回事:在 Get语句 中,是按“接收变量的空间需求”来输入数据的。 针对你的那段代码来说:
比如你在 Text1 中输入 AbcdXYZ 这7个字母,你点一下 Command2 ,事件过程执行时,(假设e:\e.txt不存在)Open语句 将在磁盘 E:\ 上创建 e.txt 这个文件,此时文件大小是0字节,同时文件也是‘打开’的,你的程序中任何一个过程都可以用 #1 这个文件号(程序内部是对应一个‘文件句柄’)操作这个文件(读/写);然后 Put语句 会把那7个字母的 ASCII码 写入文件中,此时文件大小是字7节(虽然 e 的值在内存中是14字节),如果你用调试单步运行,这句执行后,你用记事本打开它,能看到内容AbcdXYZ;接着 Close语句 ‘关闭 #1’,也就是关闭对应文件、注销对应的文件句柄,此时如果再直接用 #1 来访问文件(读/写),就会出错了,你可以用 #1 重新打开这个文件或打开别的文件。
在 Command1_Click() 中,Dim a as String 后,在你的 Get语句 之前没有对 a 赋过值,它的值是vbNullString ,也就是零长度的字符串,这时执行 Get语句 ,“将从文件开头处读取0字节”,也就是什么也不会输入了,a 仍然是空串。
要把这7个字符读出来,可以这样:
Private Sub Command1_Click() '获取文件内容
Dim a As String
Open "e:\e.txt" For Binary As #1
a = "1234567" '实际随便输7个字符都行,也可以 a = Space(7)
'a = "123" '任意三个字符也一样,下面这句只读到 Abc
Get #1, 1, a
Label1.Caption = a
Close #1
End Sub
这样就能达到你想要的效果了。
自己慢慢琢磨吧。
ramxxx = 随机文件
Dim Buff() as ByteOpen "d:\csys\8504\ctc" For Binary Access Read As #1
ReDim Buff(267)Do While Not EOF(1)
Get #1, , Buff '每次读268个byte进来
'Call 处理Buff 的Routine
Loop
Close #1'以下是写入Binary file的程式
Dim Buff() As Byte
Open "c:\tc" For Binary Access Write As #1
ReDim Buff(10)
Buff = StrConv("这是一个11", vbFromUnicode)
Put #1, , BuffReDim Buff(1)
Buff(0) = 210
Buff(1) = 70
Put #1, , Buff
Close #1
End Sub