标题:请教自定义数据类型问题
只看楼主
zhengang1026
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:136
专家分:409
注 册:2013-2-6
结帖率:100%
已结贴  问题点数:20 回复次数:9 
请教自定义数据类型问题
在学习自定义数据类型时,遇到一例题如下:
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.全世界无产者联合起来!   
搜索更多相关主题的帖子: 用户 样本 Random 
2014-12-23 17:12
zhengang1026
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:136
专家分:409
注 册:2013-2-6
得分:0 
怎么插入不了截图?

[ 本帖最后由 zhengang1026 于 2014-12-23 17:17 编辑 ]
2014-12-23 17:14
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:0 
如果是随机文件的话,你的MyFile.txt文件里的内容一定是这样的: 中国                             中国人民                         中国人民共和国                   中国人民共和国岁               全世界无产者联合起来!          ,不可能是你提供的那种样子,要不你提供原txt文件。
2014-12-23 19:07
zhengang1026
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:136
专家分:409
注 册:2013-2-6
得分:0 
MyFile.txt 中的内容就是:
1.中国                           
2.中国人民                        
3.中国人民共和国                    
4.中国人民共和国万岁            
5.全世界无产者联合起来!
MyFile.rar (496 Bytes)
2014-12-23 19:40
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:0 
```

[ 本帖最后由 wmf2014 于 2014-12-24 05:33 编辑 ]

能编个毛线衣吗?
2014-12-23 20:50
zhengang1026
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:136
专家分:409
注 册:2013-2-6
得分:0 
回复 3楼 xzlxzlxzl
xzlxzlxzl版主,再帮我看看啊,期望得到您的帮助!程序运行后得到下面的结果:(变量ID分别是11825、2573、8224等等,这都是些什么啊?)
 11825
中国                              
 2573
2.中国人民                          
 8224

3.中国人民共和国                     
 8224
   
4.中国人民共和国万岁               
 8224
     
5.全世界无产者联合起来!
2014-12-24 21:33
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:20 
你这根本就不是随机写的文件,随机文件是根据固定记录长度读写的,而通过二进制文件分析,你的文件记录长度不固定,如图:红线部分是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
2014-12-24 22:38
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:0 
回复 6楼 zhengang1026
你原来的代码第一个id为什么是11825,其实就是字符“1.”对应的整形值,“1”asc码49,“.”asc码46,16位整形数在内存中的表示是低位在前,高位在后,所以第一个id值就是46*256+49=11825,往后去由于记录长度没对应上,所以id值就变了。
2014-12-24 22:46
zhengang1026
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:136
专家分:409
注 册:2013-2-6
得分:0 
回复 8楼 xzlxzlxzl
哦,是这样!谢谢版主耐心解答!
另外版主误会了,我并没说是随机写的文件,例题中只是说“为随机访问打开样本文件”,且文件后缀就是.txt 当然是文本文件。
2014-12-25 21:07
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:0 
如果真的是用这个文件来学习自定义数据类型的文件读写的话,我只能说这是个脑残习题,极端误导人。
2014-12-26 18:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-440277-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036462 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved