走进VB6啃一块骨头

2016-02-19 12:29 0 1 收藏

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的走进VB6啃一块骨头教程,一起来看看吧!超容易上手~

【 tulaoshi.com - 编程语言 】

我们在玩《仙剑奇侠传》时,要是不能保存数据,那么非得挑灯夜战三昼夜才能玩完,可见数据存储之重
  要性。爱好编程的CFAN是不会放过数据文件的,下面跟着我驰骋吧!我们先吃一个哈密瓜,开门即来编一传统的比较有代表性的程序,不可不看的哟!
  程序分为一个表单cfanvb.frm,一个模块cfanvb.bas。一个表单程序。程序的表单中有五个命令按钮,从上到下分别命名为Cmdnew、Cmdsave,Cmdtxt、cmdlookfor、Cmdexit,标题分别为&New、&Save、&Txt、&Lookfor、&Exit;还有三个文本框,名称分别为Textname、Textage、Textsex;还有三个标签。
  程序的功能
  功能1:能存储你所输入的每一条完整记录,并创造数据库文件nas.db。
  功能2:能按输入的姓名字段查找记录并显示。
  功能3:将所有记录按NAME字段排序制成文本文件nas.txt,以便打印、修改。
  程序运行情况
  先后输入八条记录,name字段分别为李继华、朱茵、小巩、朱朱、李丽丽、黄庆、Tom、Kate,并一一存储(按Save按钮,存储第一条记录前,Txt按钮为灰色,即不可激活态);点击按钮,会出现提示框(文本的各项是按姓名顺序排列的,name分别为Kate、Tom、小巩、朱朱、朱茵、李丽丽、李继华、黄庆);在Textname文本框中输入上面任一姓名,点击按钮即可得到其他的字段(年龄、性别)情况,如果不为此八人,则显示提示框。此程序运行后可以建立一个名为Nas.db的数据库文件和一个名为Nas.txt的文本文件。
  
  Cfanvb.bas模块代码为:
  Typenas'定义记录类型
  nameAsString*6'姓名
  ageAsString*3'年龄
  sexAsString*4'性别
  EndType
  Typenasindex'定义另一记录类型
  nameAsString*6'姓名
  numberAsInteger'记录号
  EndTyep
  PublicamongAsnas'定义公共变量
  publicindex()Asnasindex'定义枚举索引数组
  PublictotalnumAsInteger'定义总记录数
  
  cfanvb.frm表单的代码为:
  OptionExplicit'强制变量必须进行正规声明
  Constnasdb="as.db"'定义常量数据库文件名
  Constnastxt="as.txt"'定义文本文件名
  Functionsearch(findtxt)AsInteger'Function过程,寻找某一姓名findtxt,得出记录号search
  DimfrontAsInteger'定义变量
  DimbehindAsInteger
  DimfindnumAsInteger
  DimmiddleAsInteger
  front=1
  behind=totalnum'定义初始值
  findnum=0
  DoWhilefront=behindAndfindnum=0
  middle=(front behind)2'用二分法查找
  Iffindtxt=Rtrim(index(middle).name)Then'找到此记录
  findnum=middle
  ElseIffindtxtindex(middle).nameThen
  front=middle 1'要找的记录在middle之后
  Else
  behind=middle-1'要找的记录在middle之前
  EndIf
  Loop
  search=findnum'如找到,则找到的记录号为search;否则,search为0
  EndFunction
  Subcreateindex()'为所有记录建立索引
  DimIAsInteger,changeAsnasindex,jAsInteger
  ForI=ITototalnum
  Get#1,I,among'读出第I条记录
  index(I).name=among.name'此记录的name字段赋予索引I的name字段
  index(I).number=I'记录号赋予索引I的number字段
  NextI
  ForI=ltototalnum-1
  Forj=I 1Tototalnum
  Ifindex(I).nameindex(j).nameThen
  change=index(I)
  index(I)=index(j)
  index(j)=change
  EndIf
  Nextj
  NextI'对索引数组排序,使index(I).nameFndSub
  PrivateSubCmdexit_Click()
  Close#1'关闭文件1
  End'结束
  EndSub
  PrivateSubCmdlookfor_Click()'查找
  DimwhichAsInteger
  DimfinditAsInteger
  which=search(textname.Text)'调用search()
  Ifwhich0Then'which0表明查找到
  findit=index(which).number
  Get#1,findit,among'由记录号读出记录
  withamong
  textname=.name'将此记录的各字段显示于文本框
  Textage=.age
  Textsex=.sex
  EndWith
  Else
  MsgBox"can'tfindit",48,"lookfor"'否则没找到提示信息
  EndIf
  EndSub
  PrivateSubcmdnew_Click()'所有文本框清空
  textname=""
  Textage=""
  Textsex=""
  textname.SetFocus'textname文本框得到输入焦点
  EndSub
  PrivateSubCmdsave_Click()
  totalnum=totalnum 1'记录数加1
  Iftotalnum0ThenCmdtxt.Enabled=True'使Cmdtxt按钮由灰色变成可激活
  Withamong'将各文本框内容存于记录
  .name=textname.text
  .age=Textage.Text
  .sex=Textsex.Text
  EndWith
  Put#1,totalnum,among'将记录加入#1
  ReDimindex(totalnum)'重新定义枚举数组
  createindex'调用过程重新建立索引
  textname=""'清空文本框,激活textname
  Textage=""
  Textsex=""
  textname.SetFocus
  EndSub
  PtivateSubCmdtxt_Click()'建立文本文件
  DimI
  Dimmessage1AsString,message2AsString
  OpennastxtForOutputAs#2'打开文本,接受输出
  ForI=1Tototalnum
  Get#1,index(I).number,among'读记录
  Withamong
  Print#2,"";Ucase(Trim.(.name))
  Print#2,"age:";.age'用Print语句建立文本
  Print#2,"sex:";.sex
  EndWith
  NextI
  Close#2'关闭文本文件
  textname.SetFocus
  message1="文本nas.txt已经建好"
  message2="file"
  MsgBox$message1,64,message2'显示文本已建好对话框
  EndSub
  PrivateSubForm_Load()'程序运行装人表单时的事件
  OpennasdbForRandomAs#1'打开数据库
  Len=Len(among)
  totalnun=LOF(1)/Len(among)'计算记录数
  Iftotalnum0Then
  ReDimindex(totalnum)'定义枚举索引数组
  createindex'建立索引
  Else
  Cmdtxt.Enabled=False'禁止Cmdtxt按钮
  EndIf
  EndSub
  我们通过以上程序,可以得出哪些启示呢?
  1.文件可分为文本文件(一般为顺序存取格式,本程序为cfanvb.txt)和随机存取文件(本程序为cfan
  vb.db)。
  2.随机存取文件由一些固定长度的记录组成,建立好索引后,能在不读入其他记录的情况下,直接跳到某一记录。
  3.在文本文件中使用的语句:
  (1)OpenfilenameForoutput(append)As#numberoutput:创建一个新文件并准备写入数据;
  append:打开一个已存在的文件并准备写入数据于文件的结尾。
  (2)Print#number,[data1;data2;data3...]
  它可将一个或多个没有分隔的字符串输出到指定文件#filenumber,“print#filename,”表示输出一空行。
  (3)Write#number,data1,data2,data3...
  它可将一行数据写入一个已经打开的文件,并提供“,”作间隔。
  (4)OpenfilenameForInputAs#number
  它为读数据而打开一个文件。
  4.随机存取文件常用语句:
  (1)OpenfilenameForRandomAs#numberLen=recordlength
  以随机方式打开一既可以读又可以写的文件,其中recordlength为文件记录的字节数。
  (2)Put#number,recordnumber,record(写入)
  Get#number,recordnumber,record(读出)
  其中,#number文件已经打开,"recordnumber指明要写入(或读出)的位置,record指那条记录。
  本文介绍了处理数据的一些传统方法和基本知识,根据本程序的思路,你可制作出自己喜欢的小程序。其实VB6还有更简单的处理数据的方法,留待以后介绍。希望我烧的骨头汤能适合大家口味。->

来源:https://www.tulaoshi.com/n/20160219/1601030.html

延伸阅读
  和.Net 中不同,VB6 中默认是使用 ByRef 来传递参数了,看来似乎没有什么可以优化得地方。 可是,实际上 如果你调用 API 得话,从 API浏览器复制下来得代码却是 强制使用 ByVal 传参得 这就给了我们优化得机会。 我又重新使用该代码 分别测试了一下 ByRef ,ByVal 得区别,结果很振奋: ByRef 比 ByVal 提高了16倍 代码如下,插入Comb...
嘿嘿,看到这个题目,想必吓了一大跳吧,或者是摆出一副不相信的表情?不用着急,请听我慢慢道来。 话说这个VB6,很是无耻,居然内置了支持Unicode的功能,也就是说,当你读入一个字符串时,它根据本地缺省语言的对应关系将之转换为Unicode,输出时,再从Unicode转换为本地编码。一方面,它当然方便啦,随便出个什么语言的版本都好方便的,...
一块怎么通话涂鸦   1)打开一块,点击群组,接着点击左下角图标。选择成员点击下方。     2)等待接通通话后点击功能,进入黑板页面后点击下方图标,即可涂鸦。所有通话中的好友都实时分享照片及涂鸦。      注 :更多精彩教程请关注图老师手机教程栏目,图老师手机数码群:296605639...
标签: 皮肤干燥
皮肤干燥经验分享 图钉问: 手臂上有一块一块的角化脱皮怎么搞的? 我是一个土生土长的北方人,到了冬天天气干燥那是避免不了的,这两天我发现自己的手臂上居然发现了一块又一块的角化和蜕皮,我反复用保湿的化妆品进行处理,然而过不了几个钟头又会发现。。 试问我的手臂上发现了角化蜕皮应当怎么处理? 图老师答: 很可是神经性...
标签: vb
由于XML文档是以树形结构为格式,所以通常采用TreeView控件显示它们。以下码段说明了如何在Visual Basic 6将XML文档传入一个TreeView控件。 首先,建立一个新的带有窗体的Visual Basic 6工程,然后在窗体中添加一个TreeView控件,并添加一个引用到微软XML解析器。 接着,在Form_Load事件中添加如下的代码: Private Sub F...

经验教程

760

收藏

7
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部