vb问题:请问怎么用二进制方式(binary)打开文本文件(txt)并读取里面的文本到文本框text1中?

网上有很多说的都不能用,请先自己测试一下是否真的可以实现 ==! 谢谢好心人
我的源码是:
Private Sub Command2_Click()
Dim char As Byte, n#
Open "D:\作业\31\1.txt" For Binary As #1
Open "D:\作业\31\2.txt" For Binary As #2
Open "D:\作业\31\3.txt" For Binary As #3
Do While Not EOF(1)
Get #1, , char
Put #3, , char
Loop
Do While Not EOF(2)
Get #2, , char
Put #3, , char
Loop
Close #1, #2, #3
用大家给的方法不能完全显示3.txt的内容 有谁能解决这个问题吗?

1、在工程菜单中 添加部件 找到 Microsoft common dialog control 选上添加。

2、在 form1 中 拖放 text、Command和commondialog 控件,把commondialog的name 属性改为 Cdg1。

3、在command1_click  事件中输入代码:

Private Sub Command1_Click()

Dim FileNam As String

Dim tStr() As Byte

Dim txtStr As String

CDg1.Filter = "*.txt"   ' 文件对话框的默认打开文件类型

CDg1.FileName = "*.txt"

CDg1.ShowOpen

FileNam = CDg1.FileName

Open FileNam For Binary As #1 '以二进制文件方式打开文件


ReDim tStr(n) As Byte

Get #1, , tStr               '读取文本

Close (1)

Text1.Text = StrConv((tStr()), vbUnicode) ' 写入text1

End Sub

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-21

如果文本文件有多行,应该把文本框Text1的MultiLine属性设为True

Dim a() As Byte
Open "a.txt" For Binary As #1
  ReDim a(LOF(1) - 1) As Byte
  Get #1, , a
Close #1
If a(0) <> &HFF And a(0) <> &HFE And a(0) <> &HEF Then
  Text1.Text = StrConv(a, vbUnicode)
Else
  MsgBox "文本文件不是ANSI编码"
End If

如果需要读取非ANSI编码文件,请补充问题。

追问

同样你的方法也只能显示一半内容,我的题目是将两个文本用二进制方法合并成文本文件并显示在文本框中 你的方法可以显示原来的两个文本 但是合并后的文本无法用这种方法全部显示出来 不知道为什么

追答

你原先没有说明你的文本文件是你自己合并成的。

你的合并方法有问题,合并后的3.txt比1.txt和2.txt加起来大2字节。

要显示你的3.txt,把

Text1.Text = StrConv(a, vbUnicode)

改成

Text1.Text = Replace(StrConv(a, vbUnicode), Chr(0), "")

正确的二进制合并文件代码,把你的两个Do循环改成

Do
  Get #1, , char
  If EOF(1) Then Exit Do
  Put #3, , char
Loop
Do
  Get #2, , char
  If EOF(2) Then Exit Do
  Put #3, , char
Loop

本回答被提问者采纳
第2个回答  2013-11-21
最简单的方法是:

Open "123.txt" For Binary As #1
Text1.Text = Input(LOF(1), #1)
Close #1

当然里面的文本文件名自己改追问

只能读出一部分 不知道 为什么 我的是题目是 :用二进制读取方法将两个文本里的内容合并将合并内容显示下文本框里
用你这个方法 只能显示一半 另一个文本里的内容无法显示

追答

大哥,以后提问题一次性完整提出来好么?你一开始提的问题跟你后面补充的代码意思大相径庭,浪费我们的时间。

Private Sub Command2_Click()
Open "D:\作业\31\1.txt" For Binary As #1
Open "D:\作业\31\2.txt" For Binary As #2
Open "D:\作业\31\3.txt" For Binary As #3
Put #3, , Input(LOF(1), #1)
Put #3, , Input(LOF(2), #2)
Close #1, #2, #3
Open "D:\作业\31\3.txt" For Binary As #1
Text1.Text = Input(LOF(1), #1)
Close #1
End Sub

追问

不好意思 之前没有说清楚 ,我以为自己合并的txt文本和 原来的txt文本是一样的,我用你写的这个代码写了一下,但是还是没有通过,返回的是一个点,连一半内容也没有了 不过还是谢谢你热心的回答~

第3个回答  2013-11-22
Private Sub Command1_Click()
Dim b() As Byte, i As Long
T = "C:\1.txt" '文本路径
Open T For Binary As #1
b = InputB(LOF(1), #1)
Close #1
For i = 0 To UBound(b)
T1 = T1 & b(i)
Next
Text1 = T1
End Sub
'请参考采纳,谢谢!

'你试过我给你的方法吗?我已经调试正常的~

Private Sub Command2_Click()
Dim a() As Byte, b() As Byte
Open "D:\作业\31\1.txt" For Binary As #1
Open "D:\作业\31\2.txt" For Binary As #2
Open "D:\作业\31\3.txt" For Output As #3
a = InputB(LOF(1), #1)
b = InputB(LOF(1), #2)
For i = 0 To UBound(a)
T1 = T1 & a(i)
Next
For i = 0 To UBound(b)
T2 = T2 & b(i)
Next
Print #3, T1 & T2
Close #1, #2, #3
End Sub
'试试这个效果怎样,把1.txt 2.txt 转换为二进制把结果保存在3.txt。
相似回答