利用VB随机文件处理中文记录与中文二进制文件的读取研究
作者:王德超
来源:《软件导刊》2016年第02期
摘要摘要:对VB应用开发中有关文件操作语法知识要点进行了综述,详细阐述了不同的文件操作适用场合,以及不同类别的文件特点。给出了应用程序界面中选择文件的相关三类控件联动方法。阐明了程序执行中,实现人机对话的三类对话框内,直接与文件操作相关的通用对话框使用方法。根据随机文件中记录数据的性质,给出正确读取中文记录的处理函数。最后根据中英文二进制文件中字节与字符的对应关系,提出了正确读取二进制文件中中英文字符的方法。
关键词关键词:随机文件;二进制文件;中文记录 DOIDOI:10.11907/rjdk.1511220 中图分类号:TP301
文献标识码:A文章编号文章编号:16727800(2016)002000402 1VB文件操作方法
VB文件操作分为程序工程建立、程序执行与程序数据读写3个阶段。程序工程建立阶段中的相关文件信息记录在VB系统的文件信息表中,包括文件名称、属性及路径等相关信息,这些都是通过VB的IDE环境中“文件”菜单来自动完成的。因此,保存了工程文件vbp后,特别是“另存为”更名文件名称后,其它相关辅助文件如窗体文件frm、通用过程文件bas及类文件cls等必须通过IDE中的“文件”菜单来完成,而不能通过操作系统Windows所提供的文件操作来实现,否则会造成因工程文件找不到其相关辅助文件而不能编辑与编译的错误。 程序执行阶段的文件操作通常是通过对话框实现的,VB提供了3类对话框:预定义对话框、自定义对话框与通用对话框。预定义对话框直接调用系统函数inputbox()和msgbox()来实现;自定义对话框通过窗体及标准控件制作;通用对话框由通用控件CommonDialog的Action属性或ShowOpen、ShowSave、ShowColor、ShowFont、ShowPrinter和ShowHelp方法实现,根据不同的适用场合分为6种类型。当然,程序执行阶段的文件操作也可通过将驱动器列表框DriverListBox、目录列表框DirListBox和文件列表框FileListBox关联起来,这3种文件操作控件相互关联。
龙源期刊网 http://www.qikan.com.cn
程序数据读写阶段的文件操作可通过3类文件实现[1]:顺序文件、随机文件和二进制文件,VB提供了程序读写这3类文件的语句和函数。顺序文件为文本文件,即不定长记录文件,没有记录号,因此不能同时进行读与写操作,且读与写必须按文件记录顺序进行;随机文件要求记录与字段必须是定长的,有用于定位与作为文件读写标识的记录号;二进制文件是字节流式文件,可任意位置读写,读写位置标识是字节整数byte。随机文件与二进制文件可按任意顺序同时进行读与写操作。三类文件的优势与不足:顺序文件结构简单,访问方式简单,顺序文件中的数据以ASCII字符形式存储,是普通的纯文本文件,可用任何字处理软件如记事本查看,但查找记录必须按顺序进行,不能同时对顺序文件进行读操作和写操作(output,append)。其读操作是在input模式下通过input #与Line input #语句及input(n,#)函数实现,而写操作是在output与append模式下通过write #与print #语句完成;随机文件可以按任意顺序访问其中数据,可以方便地修改各个记录而无需重写全部记录,在打开文件后可同时进行读操作(get#)和写操作(put#),为默认文件打开方式,但不能用字处理软件查看,占用磁盘存储空间比顺序文件大,数据结构复杂,需要用户自定义类型(type…end type)来保证其记录与字段是定长的,数据的读写只能通过自定义类型变量来实现;二进制文件灵活性很大,占用空间小,可直接以字节byte为标识从任意位置访问(get# /put#)文件,但不能用字处理软件处理,不存在记录结构,编程难度大。 2利用VB随机文件处理中文记录数据
随机文件具有严格的记录结构与字段结构,是标准数据库中关系表结构的代表。利用VB随机文件处理数据库关系报表非常方便,提供了通过Jet数据库访问Access等数据文件处理方法,从而实现VB的数据库编程[2]。 2.1VB随机文件建立
随机文件建立分为3个步骤,首先在窗体模块frm或标准模块bas的公共段,定义用于描述记录数据结构的自定义数据类型,如存放“学籍档案”数据库中的学号、姓名、性别与成绩的数据类型结构为strec(no,xm,xb,cj)等;然后由定义的随机文件记录类型,定义存放文件数据的记录变量;最后在对随机文件读写前,通过带random模式的open语句完成随机文件的建立。
2.2VB随机文件读写
通过get#语句与put#语句按记录号进行随机文件读写,其中需要上面定义的记录型变量,读写操作可通过事件过程、函数过程或通用sub过程完成。对于由数字或英文字符等纯ASCII字符组成的记录,读写操作均没问题。但对包含汉字字符的记录,由于每个汉字字符由两个字节组成,当从随机文件中读出的记录数据项的长度小于字段宽度时,则会产生只显示第一条记录的前面字段数据,后面的记录完全不能显示,即使对相应的记录数据项使用VB去掉字符串左右多余空格字符(其ASCII码值是32)的内部函数Ltrim()、Rtrim()和Trim(),也
龙源期刊网 http://www.qikan.com.cn
不能解决问题。而通过本文提供的nrtr()函数即可实现VB随机文件处理中文记录的目的,程序代码如下:
3中文二进制文件读取
在VB应用开发中,经常需要读取二进制文件中的中文字符[3]。中文字符与占1个字节ASCII字符不同,每个汉字字符占2个字节,而VB二进制文件是以字节为单位所形成的字节流式文件,如果对读取的每个字节都使用字符转换函数chr(),则ASCII字符能正确显示,但中文字符会显示为乱码符。因此,读取二进制文件的程序需要判断每个字节,如果ASCII码值在0-128范围内,则按字节转换,否则,需要读取相邻的两个字节,并将高字节乘以权28(即256)左移8个位后,与低字节连接形成16位后再转换。 参考文献参考文献:
[1]宋汉珍,王贺艳.Visual Basic程序设计[M].北京:高等教育出版社,2011.
[2]徐军,杨丽君,李翠梅,等.Visual Basic与SQL Server 2005 数据库应用系统开发[M].北京:清华大学出版社,2015.
[3]李淑华.VB程序设计及应用[M].第2版.北京:高等教育出版社,2009. 责任编辑(责任编辑:杜能钢)
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务