- 注册时间
- 2004-10-29
- 最后登录
- 1970-1-1
|
发表于 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
|
|