- 注册时间
- 2004-8-28
- 最后登录
- 1970-1-1
|
发表于 2005-8-25 14:02:00
|
显示全部楼层
因为你完全可以通过翻找老帖找到相关的内容 这里我帖出DAT文件操作最精髓的部分 随即文件的操作
作者我记得是 兰色天使~
二.数据文件的使用(随机文件)
我这里要和大家说的是随机文件。因为在WQX里面使用随机文件可以让数据的读取和查找十分迅速。当然顺序文件也不错但是他比较简单我这里就不多说了
先看下面的
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
称呼 性别 地区 职务 编号
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
青蛙 雄 池塘 班长 12312341
兔子 雌 山坡 组长 5652
鸭子 不祥 鸭圈 平民 5656
… …
这是一个表格。看到了第一行的 称呼…职务 的划分了么(随机文件叫字段)。这就表示这个表格的每条信息(随机文件叫记录)的划分情况。下面的每个信息(记录)就是文件里面的具体数据。
当然我们在做游戏的时候需要保存多个游戏者的名称,游戏时间,分数等等和这个一样了。
那么怎么用文件保存呢?
语法就是
OPEN "FF.DAT" FOR RANDOM AS #1 LEN=40
晕了么?让我来解释一下 OPEN 就是打开的意思(如果文件没有建立OPEN的同时会建立一个空的文件)。 FOR RANDOM 表示文件打开的是随机的方式这种方式打开的文件可以直接访问任意一条的信息,相当方便。 AS #1 就是 文件打开的时候给他分配一个数字编号。就像你的学号一样.为什么这样呢。这样用起来方便.因为以后只要用 #1 就可以表示这个文件了。(当然我这里讲述的是通俗一点的说法,其实只要能将问题说明白也不用使用那么多虾米都看不懂得专业术语)关键的地方是 LEN=40这里的40是什么意思呢?其实他表示你的一条信息的最大的长度。就是
称呼的字节长度+性别的字节长度… +编号的长度(不懂的话往下看就知道了)
我粗略的算了一下用40个字节比较合适。对了要提醒的是汉字是2个字节哟!
文件已经打开了。但是怎么读取一条信息呢?
首先你应给告诉你的程序。你的文件的信息的划分情况。语句是 FIELD
FIELD #1 ,8 AS XM$ ,6 AS XB$,10 AS DQ$,6 AS ZW$,10 AS BH$
这里的XM$,XB$,DQ$,ZW$,BH$是姓名,性别…编号的汉字拼音缩写当然你可以自己起任意的变量名称。
这样你就划分好了一号文件的情况 XM$=8个字节长度,XM$=10个字节长度….. …..
你算算这些长度的总和
8+6+10+6+10=40
对吧!所以我们的文件打开的时候LEN=40明白了么?
一个文件都是有大小的。GVBASIC使用LOF(文件号)
这个文件的大小就是 LOF(1)
我们用 LOF(1)/40就可以得到文件里面有多少个动物的数据了哈!
文件打开了。字段也划分好了怎么写入呢?
其实很简单
LSET XM$=具体的数据
LSET XB$=具体数句
。。。。 。。。。。。
LSET(我后面会给大家解释的)
当你把所有的数据都写入完毕的时候你实际还没有真正的存入文件里面(实际是写入了缓冲区不过不管他什么缓冲不缓冲的不知道也没有关系).怎么存入呢?一句话
PUT #1 ,N
这里的#1大家都知道了。N是什么意思呢?N表示写到数据文件的第几条。当你的文件里面有3个动物的信息的时候你 PUT #1,4就是填写为新的数据如果PUT #1 ,2就是将现在的信息覆盖第二条信息.以此类推。
要注意的是你的N最小是1,N最大只能是这个文件的信息(记录)的总数+1也就是说如果你有3个动物的信息如果你PUT #1,5的话就会因为没有第4条而出现错误。怎么确定文件有多少记录呢?LOF(1)/40前面讲过了
好了祝贺你这条信息保存了。然后呢?如果你要继续添加数据的时候就继续添加如果不需要了那么一定注意!!!!!!!!!!!用 CLOSE #1 关闭文件。(虾米一定注意,打开文件并使用完毕要关上。做事情要善始善终嘛!要不然会倒霉的)
好了说说LSET吧!还记得姓名被划分了8个字节的长度吧?也就是说如果你在姓名里面填写一个字母也要占用8个字节,其他的会用空格(置于是不是空格我也不清楚,可能是吧)补充的(浪费!所以要合理的划分字段长度,)
既然是8个长度,那么输入一个 [小猪] 的话怎么放入呢?是
1.
小猪
oooooooo (8个字节)
还是
2.
小猪
oooooooo(8个字节)
其中LSET就是表示用第一种方式写入,如果你要用第二种的话就是用RSET
LSET实际就是LEFT SET ,RSET 就是 RIGHT SET
需要说明的是你输入的长度如果超过了8个字节长度,多余的字节会被截去的。
明白了吧!其实复杂的东西如果明白了就是这么简单。
数据是保存好了。但是怎么搞出来呢?
用 GET呀!
GET #1,N
其中N就是第几条信息。(N最小为1最大不能超过你的信息的数目)
GET #1,1就是读取第一条信息。然后你字段划分的变量里面就有数句了
PRINT XM$;XB$;DQ$;ZW$;BH$
就可以看到了啊!
到这里就完全讲完了怎么样?有做一个课程表,成绩管理的程序的冲动嘛。哈哈还等什么动手做吧!(记得最后CLOSE #1哟!还有当你CLOSE以后就不能再读这个文件了除非你再OPEN)
使用总结:
1.我经常玩星迷的游戏发现如果不创建安装文件就会出错误。(尴尬)
如果你能再OPEN以后用LOF(文件号码)测文件的长度。(果为0就表示没有信息。)那么就不会出现上面尴尬的局面了。(文件没有内容你随便GET不出错才怪)
2.再就是如果你要做查询就可以让用户输入信息然后从文件的第一条到最后一条依次读取然后进行比较。(虽然慢但是在文曲星上面很不错了。当然如果你能给信息编号用分治的算法搜索更好了啊,不过就是程序复杂了一点)
3.如果你要保存地图的话。一个地图信息的长度为20(因为wqx的屏幕20个字符),然后5个(WQX最多为5行)为一个组的对待就可以了。比如第1关的场景就是
ROUND=1
FOR XUN=(ROUND-1)*5 TO ROUND*5
GET #1,XUN
NEXT XUN
你就可以读取任意关的场景了啊!当然不一定是20个字符和5行信息这要看你的地图的划分情况了啊!反正我用的都是这样的(我喜欢因为速度快)。 |
|