注册 登录
编程论坛 VB6论坛

请教自定义数据类型问题

zhengang1026 发布于 2014-12-23 17:12, 667 次点击
在学习自定义数据类型时,遇到一例题如下:
Option Explicit
Private Type Record   ' 定义用户自定义的数据类型。
    ID As Integer
    Name As String * 32
End Type
Private Sub Form_Click()
    Dim MyRecord As Record, Position   ' 声明变量。
    ' 为随机访问打开样本文件。
    Open App.Path & "\MyFile.txt" For Random As #1 Len = Len(MyRecord)
    ' 使用 Get 语句来读样本文件。
    For Position = 1 To 5  ' 我加的测试。
       Get #1, Position, MyRecord   
       Print MyRecord.ID      ’分别打印自定义数据
       Print MyRecord.Name
    Next
    Close #1   ' 关闭文件。
End Sub
运行后如附图所示,请问:
1、这里的变量ID里存的是什么东西?(貌似无规律可循?)
2、为什么“Name As String * 32”如改写为“Name As String * 22”或其他值,输出就乱了?
3、为什么第一行不显示“1.”?

附:在程序所在目录下有“MyFile.txt"文件,其中有五行字符串:
1.中国                           
2.中国人民                        
3.中国人民共和国                    
4.中国人民共和国万岁            
5.全世界无产者联合起来!   
9 回复
#2
zhengang10262014-12-23 17:14
怎么插入不了截图?

[ 本帖最后由 zhengang1026 于 2014-12-23 17:17 编辑 ]
#3
xzlxzlxzl2014-12-23 19:07
如果是随机文件的话,你的MyFile.txt文件里的内容一定是这样的: 中国                             中国人民                         中国人民共和国                   中国人民共和国岁               全世界无产者联合起来!          ,不可能是你提供的那种样子,要不你提供原txt文件。
#4
zhengang10262014-12-23 19:40
MyFile.txt 中的内容就是:
1.中国                           
2.中国人民                        
3.中国人民共和国                    
4.中国人民共和国万岁            
5.全世界无产者联合起来!
只有本站会员才能查看附件,请 登录
#5
wmf20142014-12-23 20:50
```

[ 本帖最后由 wmf2014 于 2014-12-24 05:33 编辑 ]
#6
zhengang10262014-12-24 21:33
回复 3楼 xzlxzlxzl
xzlxzlxzl版主,再帮我看看啊,期望得到您的帮助!程序运行后得到下面的结果:(变量ID分别是11825、2573、8224等等,这都是些什么啊?)
 11825
中国                              
 2573
2.中国人民                          
 8224

3.中国人民共和国                     
 8224
   
4.中国人民共和国万岁               
 8224
     
5.全世界无产者联合起来!
#7
xzlxzlxzl2014-12-24 22:38
你这根本就不是随机写的文件,随机文件是根据固定记录长度读写的,而通过二进制文件分析,你的文件记录长度不固定,如图:红线部分是1、2两条记录,长度为36字节,蓝线部分3是38字节,黑线部分4是35字节,绿线部分5是29字节,文件总长度为174字节。你这就是一个普通的文本文件。
只有本站会员才能查看附件,请 登录


Option Explicit
Private Sub Form_Click()
    Dim a As String
    Open App.Path & "\MyFile.txt" For Input As #1
    While Not EOF(1)
    Line Input #1, a
    Print a
    Wend
    Close #1   ' 关闭文件。
End Sub
#8
xzlxzlxzl2014-12-24 22:46
回复 6楼 zhengang1026
你原来的代码第一个id为什么是11825,其实就是字符“1.”对应的整形值,“1”asc码49,“.”asc码46,16位整形数在内存中的表示是低位在前,高位在后,所以第一个id值就是46*256+49=11825,往后去由于记录长度没对应上,所以id值就变了。
#9
zhengang10262014-12-25 21:07
回复 8楼 xzlxzlxzl
哦,是这样!谢谢版主耐心解答!
另外版主误会了,我并没说是随机写的文件,例题中只是说“为随机访问打开样本文件”,且文件后缀就是.txt 当然是文本文件。
#10
xzlxzlxzl2014-12-26 18:45
如果真的是用这个文件来学习自定义数据类型的文件读写的话,我只能说这是个脑残习题,极端误导人。
1