易码技术论坛

 找回密码
 加入易码
搜索
查看: 230847|回复: 4

[求助]新手求助

[复制链接]
发表于 2005-5-6 19:41:00 | 显示全部楼层
[原创] 细说RANDOM文件(存储篇)
作者:兰色天使
     序言:最近,我在WQXNEET上看见许多朋友都问到了RANDOM文件的问题,我给他们回复了,并用 蛙蛙 的帖子加以解释,可许多星迷仍惑之不解。特此,我写了一篇详细的RANDOM文件用法,献给我最爱的星迷朋友们!
=======================================================================================================================
                                             一.  文件储存
1.打开文件,限定每一群信息的大小
为什么我说“每一群”呢?请继续看:比如我 OPEN "FILE"  FOR RANDOM AS #1 LEN=15,  LEN=15 就是每个信息的总长,因为写入时,是一个一个信息地写入,即每次写入一个信息群。
2.分信息组成信息群
上面,我们已经限定了每群信息的总长,现在,我们对这个群进行划分。假使我将它分3块,分别占 3,5,7 个字节: FIELD #1,3 AS A$,5 AS B$,7 AS C$,  那么,每个信息群由 3 字节的 A$,5 字节的 B$,7 字节的 C$,这三种分信息组成,以下简写:{3(A$)+5(B$)+7(C$)},就是群。 FIELD 完了,也就等于已经空出 3 个空格准备存放 A$,5 个空格准备存放 B$,7 个空格准备存放 C$。我们现在要做的就是分别往空格内填放信息: LSET A$="aaa"SET B$="bbbbb"SET C$="CCCCCCC",那么这一群信息的分布是 aaabbbbbCCCCCCC,有人会问了:如果 LSET A$="a"SET B$="bb":LSET C$="CCCC"的话,那么这群信息的分布是 a_ _ bb_ _ _ CC_ _ _ _ _(“_”代表空格)。如果前面 FIELD #1 的顺序是:FIELD #1,3 AS C$,5 AS A$,7 AS B$   的话,后 LSET 仍是 LSET A$="aaa":LSET B$="bbbbb":LSET C$="CCCCCCC", 那么这一群的分布如下: CCCaaa_ _bbbbb_ _
3.将群信息放入记录
前面,我们已经将一个群分配好了,下面是写入工作: PUT #1,1 。好了,第一群的信息已放入记录 1 中,你还想放入第二群信息的话,只需再次 LSET A$,LEST B$,LSET C$,之后 PUT#1,2 就行了!(若2中已有数据,我将新的数据仍放在 2,则是覆盖了原有 2 的信息群,替换新的信息群。 如果要求出记录内有几群信息,只需 LOF(1)/LEN的大小。 )  放入记录时,星星会自动依次按分布放入,比如 1 号记录分布aaabbbbbCCCCCCC,2 号记录分布 a_ _ bb_ _ _ CC_ _ _ _ _, 整体看来:文件内有记录:aaabbbbbCCCCCCCa_ _ bb_ _ _ CC_ _ _ _ _
4.储存练习(星迷可以练一下)
///////////////////////////////////////////////////////////////////////////////////////////////
              性别                性格                    学习成绩                       志向
///////////////////////////////////////////////////////////////////////////////////////////////
浪人乙       男                  古怪                         特差                         流浪
---------------------------------------------------------------------------------------------------------------
小红         女                 爱撒娇                      良好                         暂且无
---------------------------------------------------------------------------------------------------------------
兰色天使    男                乐于助人                    一般                            本科
///////////////////////////////////////////////////////////////////////////////////////////////

解法:先明确有几群信息:3 群,分别以人物为群
        姓名,为保证每个姓名都完全写入,“兰色天使” 占据了 8 个字节(汉字每个2字节),我们则规定 8(XM$)
        性别,2 字节,2(XM$)
        性格,8 字节,8(XG$)
        学习成绩,4 字节,4(XX$)
        志向,6 字节,6(ZX$)
   好,加一下吧,限定每群信息大小28(8+2+8+4+6=28)
10 OPEN "Homework" FOR RANDOM AS#1 LEN=28
    对每群内的信息种类按顺序进行分配
20 FIELD #1,8 AS XM$,2 AS  XB$,8 AS XG$,4 AS XX$,6 AS ZX$
    好,开始写浪人乙的信息吧!
30 LSET XM$="浪人乙":LSET XB$="男":LSET XG$="古怪"
40 LSET XX$="特差":LSET ZX$="流浪"
50 PUT #1,1
    第一群浪人乙的信息写完了,该谁了呢? 小红吧
60 LSET XM$="小红":LSET XB$="女":LSET XG$="爱撒娇"
70 LSET XX$="特差":LSET ZX$="流浪"
80 PUT #1,2
    小红的也写完了,该轮到本人了!
90 LSET XM$="兰色天使":LSET XB$="男":LSET XG$="乐于助人"
100 LSET XX$="一般":LSET ZX$="本科"
110 PUT #1,3
      文件存储到此结束,关于读取,我会再写一篇的,大家有问题找我,发帖子 或 QQ  260508801
                                                                      兰色天使
                                                                       03.9.23   

 楼主| 发表于 2005-5-6 21:19:00 | 显示全部楼层
强~~~受教ing……
发表于 2005-5-8 22:06:00 | 显示全部楼层
好,期待“读取篇”。
发表于 2005-5-24 10:02:00 | 显示全部楼层
去看www.tgclc.com的basic精华收录,好像里面有电脑娃娃的这方面教程,我就是用那个学会的
 楼主| 发表于 2005-5-6 17:45:19 | 显示全部楼层 |阅读模式
在BASIC中读写DAT文件使用的output/input模式与random模式有什么区别。在哪种情况下该使用random模式会比较好?

另求random模式作用原理,谢谢!
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-6-17 04:00 , Processed in 0.010699 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表