永发信息网

vb 关于读入和写出

答案:3  悬赏:0  手机版
解决时间 2021-04-03 05:52
  • 提问者网友:轻浮
  • 2021-04-02 23:52
vb 关于读入和写出
最佳答案
  • 五星知识达人网友:有你哪都是故乡
  • 2021-04-02 23:57
若是在VB控件的属性窗中手动提取Caption, 粘贴到XTX文件里,无双引号;

True 对应1, False对应0,若在运行程序中提取属性,可在程序中用代码转换为True或False;

双引号及# #,亦可在程序中用代码清除。追问清楚方法呢追答若你有一定的VB编程经验,
程序中可用Ltrim 、Rtrim、Trim、Left、Right 等函数来清除所提取的属性字串前后缀的##等字符。
全部回答
  • 1楼网友:由着我着迷
  • 2021-04-03 02:06


提供两种方法:代码如下:
Private Sub Command1_Click()
  Dim f As Integer
  f = FreeFile    '取得空闲的文件号
  a = Label1.Caption
  b = Label2.Caption
  c = Label3.Caption
 
    Open "D:a.txt" For Random As #f    ' 打开一个随机文件,如果没有则自动创建,
    Put #f, 1, a
    Put #f, 2, b
    Put #f, 3, c
    Close #f
   
End Sub
Private Sub Command2_Click()
    Dim f As Integer
    f = FreeFile
    Open "D:a.txt" For Random As #f
    Get #f, 1, a                  '读取内容到变量
    Get #f, 2, b
    Get #f, 3, c
    Close #f
   
    Text1.Text = a           '将变量赋值给文本框
    Text2.Text = b
    Text3.Text = c
End Sub
Private Sub Command3_Click()    '保存为纯文本,
 Dim f As Integer
 f = FreeFile
     a = Label1.Caption
     b = Label2.Caption
     c = Label3.Caption
    Open "D:a.txt" For Output As #f
    Print #f, , a
    Print #f, , b
    Print #f, , c
    Close #f
    
End Sub
第一种随机文件方法运行后效果如下:

第二种方法保存后的文本效果如下:

读取方法就不写了,自已研究下吧
这里说一下,第二种方法写入  print #f,a   这样就可以了,失误
如果用 Write #f,a     则会出现你所说的保存的内容多了双引号
  • 2楼网友:傲气稳了全场
  • 2021-04-03 00:33

""和##是表明数据的类型,读入的时候直接读入即可,VB会自动根据""和##进行处理的。比方说:Private Sub Command1_Click() '写入文件
Dim aa As String, bb As Boolean
aa = A.Caption
bb = A.Enabled
Open "E: mpxa.txt" For Output As #1
Write #1, aa, bb
Close #1
MsgBox "已写入文件"
End Sub
Private Sub Command2_Click() '读入文件
Dim aa As String, bb As Boolean
Open "e: mpxa.txt" For Input As #1
Input #1, aa, bb
A.Caption = aa
A.Enabled = bb
Close #1
MsgBox "已读入文件"
End Sub
VB会自动把""内的内容识别为字符串,##内的内容识别为布尔值或日期时间值,没有符号的则识别为数字。实际读入的数据是不含"和#的!

如果你非要把""和##去掉也可以,写入文件的时候不用Write改用Print即可,但是读入文件的时候就要稍微麻烦一些了,需要进行数据格式的转换。
另外True和False也不建议改为0和1,原因也同上,是把简单问题复杂化了。追问


第一张是写入的, 第二张是写入后的TXT的样子, 注意##个”“,尤其”“显示的还换行了,写入代码应该怎么调, 我的caption是一个数组,
追答我都说了,VB之所以这样是有道理的,是为了读取方便!之所以有换行,是因为caption中本身含有换行!这个不影响读取的,VB只认双引号!
比如说要读取的时候可以这样:
Input #1, a, b, Form2.Checkjd(0).Value, Form2.Checkjd(0).Enabled, Form2.Checkjd(0).Caption
Input #1, a, b, Form2.Checkjd(1).Value, Form2.Checkjd(1).Enabled, Form2.Checkjd(1).Caption
Input #1, a, b, Form2.Checkjd(2).Value, Form2.Checkjd(2).Enabled, Form2.Checkjd(2).Caption
......
这样的话,你根本就不用关心文件中是不是有##、""以及逗号和换行,VB会自动帮你识别的!(补充一下:由于不知道前两个数字是干嘛的,所以把它读入到变量a和b中了)
你如果还是无法理解,那我也没辙了!
你如果非要搞个“干净版”的文本文件,那么你就要这样:
Print #1, "1,1," & Form2.Checkjd(0).Value & "," & Form2.Checkjd(0).Enabled & "," & Form2.Checkjd(0).Caption
Print #1, "1,2," & Form2.Checkjd(1).Value & "," & Form2.Checkjd(1).Enabled & "," & Form2.Checkjd(1).Caption
......
你不觉得这样比用Write要复杂得多吗?连数据间的分割符(这里用逗号)也要手工加入。更变态的是,如果数据中本身含有回车换行符,还要先转换为其他字符,否则的话会影响读取!当然,读取的方法那就更复杂了,这里就不说了。
不知你听明白没有?难道你就不想想,VB为什么会这么做么?难道微软的工程师会故意作弄你么?追问谢谢你的回答, 但是不晓得你看清楚我发的没有,我是把caption写入到txt里面,然后在读取写入的东西,这样一个过程到第二次程序里面的caption就多了两个”“,换行符什么的,caption本身也是读的csv文件,文件里面没有任何”“和换行符,谢谢追答那肯定是你的读取方法不对
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯