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

网上有很多说的都不能用,请先自己测试一下是否真的可以实现==!谢谢好心人我的源码是:PrivateSubCommand2_Click()DimcharAsByte,n#O... 网上有很多说的都不能用,请先自己测试一下是否真的可以实现 ==! 谢谢好心人
我的源码是:
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的内容 有谁能解决这个问题吗?
展开
 我来答
xujmhw6
2015-12-21 · TA获得超过1084个赞
知道大有可为答主
回答量:1261
采纳率:84%
帮助的人:353万
展开全部

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

nefu_20061617
2013-11-21 · TA获得超过2342个赞
知道大有可为答主
回答量:1064
采纳率:72%
帮助的人:1477万
展开全部

如果文本文件有多行,应该把文本框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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
网海1书生
科技发烧友

2013-11-21 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部
最简单的方法是:

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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
忠成静0O
2013-11-22 · TA获得超过1049个赞
知道小有建树答主
回答量:1114
采纳率:100%
帮助的人:897万
展开全部
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。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式