主题:vb中用put写入后,记事本中为什么是乱码,请高手援助!拜谢!
majun831112
[专家分:0] 发布于 2014-04-22 18:09:00
Private Type record
one As String
two As String
End Type
---------------------------------------------
Private Sub Command1_Click()
Dim a As record
Open "c:\file1.txt" For Random As #1
a.one = Text1.Text
a.two = Text2.Text
Put #1, 1, a
Close 1
End Sub
---------------------------------
记事本中结果是:
敔瑸Ա吀硥㉴
为什么会这样,本来应当是
text1.text 是text1
text2.text是text2
为什么会这样啊,哪里错了??
|
最后更新于:2014-04-22 18:13:00
回复列表 (共6个回复)
沙发
孙瑞 [专家分:590] 发布于 2014-04-22 23:17:00
我明天看看。现在没时间了。
板凳
孙瑞 [专家分:590] 发布于 2014-04-24 14:01:00
往后推推,暂时还没时间看,不好意思啊
3 楼
孙瑞 [专家分:590] 发布于 2014-04-24 22:36:00
原因是这样的
你使用如下的定义其实是有问题的,因为String未指定长度,而作为一个记录,长度需要是固定的,否则会难以确定数据长度。
改成这样:
Private Type record
one As String*20
two As String*20
End Type
这个*和后面的数字表示这个String是定长字符串。长度为20,这样就不会出问题了。当然,记得检查输入的内容长度是否超过20.
4 楼
majun831112 [专家分:0] 发布于 2014-04-25 15:39:00
我试了一下,还真是啊!谢谢了,这下明白为什么了。之前我也试出来过,可就是不明白为什么
5 楼
guoyong_cy [专家分:3050] 发布于 2014-04-25 21:43:00
其实这样也能存,不过读的时候必须自己解码,因为存了一些不认识的控制字符,notepad是不认识的。
在cmd里面输入C:\>type file1.txt 看下结果就明白了
6 楼
孙瑞 [专家分:590] 发布于 2014-04-25 23:50:00
[quote]其实这样也能存,不过读的时候必须自己解码,因为存了一些不认识的控制字符,notepad是不认识的。
在cmd里面输入C:\>type file1.txt 看下结果就明白了
[/quote]
这个倒是没有试过,找时间试一下。
我来回复