第12章 处理文件 Visual Basic 程序设计教程.

Slides:



Advertisements
Similar presentations
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
Advertisements

第四章 控制结构.
第 7 章 文 件.
第十六章 设计文件应用程序 本章内容及要求: 掌握VB中文件的概念、种类及其结构; 掌握顺序文件的操作:打开、读/写、关闭;
网 络 课 程 马 鞍 学 网 络 山 课 程 大 络 网 Visual Basic程序设计 第 一 讲 最容易接受的编程语言
Oracle数据库 Oracle 子程序.
高等医药院校药学类第三轮规划教材——大学计算机基础
在PHP和MYSQL中实现完美的中文显示
Visual Basic程序设计.
Hadoop I/O By ShiChaojie.
Visual Basic 程序设计 第12章文件处理
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
初识Visual Basic.
第十三章 檔案.
第9章 访问数据库 9.1 数据库的概念与建立 9.2 用Data控件访问数据库.
第4章 程序控制结构与算法基础.
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
第 8 章 数据文件.
PCR300 (13.56MHz) Reader RS232/USB.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
第四章 命令按钮、标签和文本框 大多数应用程序中都有命令按钮CommandButton控件,用户可以单击按钮执行某项操作。
Visual Basic程序设计.
第四章 附件 (应用程序软件包).
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
第七章 文件 本章重点 7.1 文件管理控件 7.2 文件处理 7.3 练习.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
VB程序设计语言 主讲教师:王 杨.
Java语言程序设计 清华大学出版社 第8章 输入输出流(1).
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
小结 郭清溥.
学习目标 1、什么是字符集 2、字符集四个级别 3、如何选择字符集.
第二章、第三章错题分析.
VB与Access数据库的连接.
姚金宇 MIT SCHEME 使用说明 姚金宇
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
Lab17 程序设计B班
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
3.16 枚举算法及其程序实现 ——数组的作用.
1位选手参加了歌唱比赛,评委们的评分如下:
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
1位选手参加了歌唱比赛,评委们的评分如下:
Print方法和函数 2019/5/19.
計算機程式 Visual BASIC 程式設計
Python 环境搭建 基于Anaconda和VSCode.
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
解析算法与枚举算法.
第11章 文件处理技术 文件是存放在外部介质上的数据集合。很多程序需要读写磁盘文件,所以涉及到如何建立文件,如何从文件中读数据,如何向文件写数据等问题。本章将讨论与文件操作相关的内容。
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
VB与Access数据库的连接.
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
WEB程序设计技术 数据库操作.
算法与Visual Basic程序基础(二)
第四章 UNIX文件系统.
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
顺序结构程序设计 ——关于“字符串”和数值.
RefWorks使用指南 归档、管理个人参考文献.
Presentation transcript:

第12章 处理文件 Visual Basic 程序设计教程

本章介绍: · 使用文件系统控件 · 使用有关的语句和函数 · 操作顺序文件 · 操作随机文件 · 使用文件系统对象 Visual Basic程序设计教程

12.1 概述 · 为什么要引入了数据文件 · 文件标识符 · 文件分类:程序文件和数据文件 · 为什么要引入了数据文件 · 文件标识符 · 文件分类:程序文件和数据文件 · 数据文件按存储方法的不同,可分为以下三种类型: 1.顺序文件 2.随机文件 3.二进制文件 · 数据文件的操作形式 Visual Basic程序设计教程

12.2 操作顺序文件数据的例子 【例12-1】设计一个如图12.1所示的界面,该窗体上有1个驱动器列表框、1个文件夹列表框、1个文件列表框和一个文本框。当启动窗体后,用户在驱动器列表框选择驱动器后,文件夹列表框显示选中驱动器下的文件夹,用 户双击相应的文件夹,在文件列 表框中显示该文件夹下的所有文 本文件(.txt),用户双击相应的文件就可以在文本框中显示该文件内容。 Visual Basic程序设计教程

12.3 使用文件系统控件 ·VB提供了三种文件系统控件,它们是:驱动 器列表框(DriveListBox)、文件夹列表框(DirListBox)和文件列表框(FileListBox)。 Visual Basic程序设计教程

·驱动器列表框是下拉式列表框,用来显示当 前系统中所有有效的驱动器(包括远程连接的驱动器)。通过这个下拉列表框用户可以选择驱动器。 12.3.1 驱动器列表框 ·驱动器列表框是下拉式列表框,用来显示当 前系统中所有有效的驱动器(包括远程连接的驱动器)。通过这个下拉列表框用户可以选择驱动器。 ·1.属性 2.常用事件:Change事件。 Visual Basic程序设计教程

2.常用事件:Change事件。 Visual Basic程序设计教程 Drive 用来设置当前驱动器或返回所选择的驱动器名: 属性 说明 Drive 用来设置当前驱动器或返回所选择的驱动器名: 对象名.Drive[=驱动器名] List 该属性的类型为字符串数组,其中每一个列表项的内容是各有效驱动器符和它们的卷标 ListCount 表示系统中驱动器的个数 2.常用事件:Change事件。 Visual Basic程序设计教程

·文件夹列表框以树形展开方式显示某个驱动器或文件夹内的各个子文件夹名,并用打开的文件夹图标来表示选定的文件夹,称当前目录。 12.3.2 文件夹列表框 ·文件夹列表框以树形展开方式显示某个驱动器或文件夹内的各个子文件夹名,并用打开的文件夹图标来表示选定的文件夹,称当前目录。 ·属性 Path:用来设置当前文件夹名或返回所选择的文件夹名. List:该属性的类型为字符串数组,它的每一个列表项的内容是选定磁盘或文件夹下的各子文件夹名 Visual Basic程序设计教程

ListCount:表示当前文件夹下的子文件夹个数。 ListIndex:它取值的有效范围为-n~ListCount-1。 其中,-1是当前选定文件 夹在List属性列表中的序 号,从0~ListCount-1则 为它的子文件夹在List属 性(数组)中的序号(下标),而当前文件夹的父文件 夹是绝对值大于1的负数,如图12.3所示。 Visual Basic程序设计教程

·常用事件 Chang事件。当鼠标双击新文件夹或改变Path属性时,触发Change事件,Change事件发生后,改变了文件夹列表框的Path属性,即改变了当前文件夹。 Click事件。当鼠标单击文件夹时,触发Click事件,Click不会改变文件夹列表框中的当前文件夹,但它会改变文件夹列表框的ListIndex属性,因此要在Click事件中改变当前文件夹,可用以下代码实现。 Private Sub Dir1_click() Dir1.Path = Dir1.List(Dir1.ListIndex) End Sub Visual Basic程序设计教程

·Keypress事件。按Windows系统的惯例,在程序中可用两种方法改变选定的路径,即用鼠标双击列表框内的某个文件夹名,或先用光标键把列表框内的光标条移到指定文件夹上,然后按回车。后一种方法的实现,必须由控件的KeyPress事件来完成。例如: Private Sub Dir1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Dir1.Path = Dir1.List(Dir1.ListIndex) End If End Sub Visual Basic程序设计教程

12.3.3 文件列表框 ·文件列表框用于显示当前文件夹下的文件。 ·属性 Visual Basic程序设计教程 描述 Path 12.3.3 文件列表框 ·文件列表框用于显示当前文件夹下的文件。 ·属性 属性 描述 Path 与文件列表框的Path属性相同 FileName 用于返回或设置一个被选中的文件名。 Pattern 用于返回或设置列表框内文件的显示模式,该属性的类型为字符串型,默认值为“*.*”。可同时使用多种模式,用分号“;”分隔不同的模式。例如File1.Pattern="*.COM;*.EXE" MultiSelect 设置是否允许选择多个文件 Visual Basic程序设计教程

·常用事件 Click事件 DblClick事件 Pathchange事件 Patternchange事件 Visual Basic程序设计教程

文件系统控件例子 【例12-2】设计一个如图12.4所示界面,演示了文件系统控件之间的关系。界面中驱动器、文件夹和文件列表框的名称分别 为Drive1、Dir1和File 1,组合框的名称为Com bo1,其Style属性为2。 文件系统控件例子 Visual Basic程序设计教程

程序代码 Private Sub Form_Load() Combo1.AddItem "所有文件(*.*)" Combo1.AddItem "文本文件(*.TXT)" Combo1.AddItem "图形文件(*.bmp;*.jpg)" Combo1.ListIndex = 0 Dir1.Path = "c:\windows" End Sub 程序代码 Visual Basic程序设计教程

Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path Visual Basic程序设计教程

Private Sub Combo1_Click() If Combo1.Text = "所有文件(*.*)" Then File1.Pattern = "*.*" ElseIf Combo1.Text = "文本文件(*.TXT)" Then File1.Pattern = "*.TXT" ElseIf Combo1.Text = "图形文件(*.bmp;*.jpg)" Then File1.Pattern = "*.bmp;*.jpg" End If End Sub Visual Basic程序设计教程

其中Sub Combo1_Click()内的程序代码也可以写成: ·M=InStr(1,Combo1.Text,"(") ·N=InStr(1,Combo1.Text,")") ·File1.Pattern = Mid(Combo1.Text,M+1,N-M-1) Visual Basic程序设计教程

·VB提供了许多与文件操作有关的语句和函数,使用户可以在应用程序中很方便地对文件和文件夹进行删除、复制和获取文件有关属性等操作,这里简单介绍常用的几个语句。 1. ChDrive 语句 格式:ChDrive drive 功能:改变当前驱动器。 示例:ChDrive "D:" 12.4 使用有关的语句和函数 Visual Basic程序设计教程

功能:创建一个新的文件夹,如果设置了一个无效 的文件夹存储路径,将会产生错误。 2. MkDir语句 格式:MkDir folder 功能:创建一个新的文件夹,如果设置了一个无效 的文件夹存储路径,将会产生错误。 示例:MkDir "C:\TMP":MkDir "C:\TMP\ABC" Visual Basic程序设计教程

3.RmDir语句 4. ChDir语句 格式:RmDir folder 功能:删除一个存在的空文件夹,文件夹内不能有文 件。如果有文件,先用Kill语句删除所有文件。 示例:RmDir "C:\TMP\ABC" 4. ChDir语句 格式:ChDir path 功能:改变当前文件夹 示例:ChDir "C:\TMP" Visual Basic程序设计教程

格式:FileCopy source,destination 功能:复制一个指定源文件到目标位置,用来确定 复制的源文件名和目标文件名,它们都可包 括文件的存储路径,不能复制一个已经打开 的文件。 示例:FileCopy "C:\abc.txt", "C:\TMP\bbb.txt" Visual Basic程序设计教程

6. Kill语句 7. Name语句 格式:Kill file 功能:删除指定的文件,必要时文件名应指明它的存储路 径。为了删除一类文件,可以使用文件通配符。 示例:Kill "C:\TMP\*.txt" 7. Name语句 格式:Name old_name As new_name 功能:重新命名一个文件或文件夹。Name语句具有移动文件 的功能,即在重新命名时并将其移动到一个不同的文 Visual Basic程序设计教程

8.Shell方法 (函数) 件夹,不能重新命名一个已经打开的文件。 改名示例:Name "C:\TMP\bbb.txt" as "aaa.txt" 移动示例:Name "C:\TMP\aaa.txt" as "c:\bbb.txt" 8.Shell方法 (函数) 格式:Shell command_file[,window_style]或 Shell(command_file[,window_style]) 功能:调用各种外部的可执行文件(不能调用操作系统的 各种内部命令)。 Visual Basic程序设计教程

9.CurDir函数 10. FileLen函数 说明:command_file用以确定要执行的外部文件的文件名 和目录路径。window_style为数值型表达式,用以 设置Shell窗口的初始状态值。该值也可使用VB系 统的符号常量,如表12.5所示。 9.CurDir函数 格式:CurDir ([drive] ) 功能:返回指定盘或默认盘的当前文件夹。 10. FileLen函数 格式:FileLen(file_name) 功能:返回是指定文件的长度,单位为字节数。 Visual Basic程序设计教程

12.5 操作顺序文件 ·VB中的顺序文件是普通的文本文件,文件中的每个数据以ASCII码(文本)形式存储,因此能被不同语言的程序共享或直接打印输出,也可由文本编辑器(如记事本或EDIT等)进行修改。 ·顺序文件结构比较简单。它的存储方式是顺序存储,即一个数据接着一个数据地顺序排列,只是提供了第1个数据的存储位置。要查找一个数据时,必须从头开始一个一个地读取直到找到所要的数据。 Visual Basic程序设计教程

Open 文件名 For模式 As [#] 文件号 12.5.2 打开顺序文件 打开文件使用是Open语句,其格式为: Open 文件名 For模式 As [#] 文件号 1.文件名:指定打开的文件。 2.模式:用于指定文件的操作方式,顺序文件共有3种操作方式,可以选择下列三种形式之一: (1)Input:打开一个已经存在的文件作读操作。 (2)Output:打开一个新文件作写操作,如果文件标识符指定的文件已经存在,则文件中的原内容将被清除。 Visual Basic程序设计教程

(3) Append:打开文件后在文件末尾作追加数据的写操作,如指定的文件已经存在,则文件中的原内容被保留,否则将创建一个新文件。 3.文件号:文件号也称通道号,是一个介于1~512之间的整型。 4.FreeFile函数:用来获取一个可用的最小的空闲通道号,使用格式为: FileNo=FreeFile() 或 FileNo=FreeFile0 Visual Basic程序设计教程

·例如: ·Open "C:\TMP\ABC.DAT" For Input As 1:表示以读文件的操作模式,打开在C:\TMP路径下的名为ABC.DAT的数据文件。 ·Open FileName For Output As FileNo:表示以写文件的操作模式,创建一个新文件,文件名及存储路径由变量FileName的值决定,通道号由变量FileNo的值决定。 Visual Basic程序设计教程

1. Write # 语句。将表达式的值写入与文件号相关的顺序文件。使用格式如下。 12.5.3 写入操作 1. Write # 语句。将表达式的值写入与文件号相关的顺序文件。使用格式如下。 Write #文件号,[输出表达式列表] Visual Basic程序设计教程

(1)输出表达式列表的各表达式间可用逗号(,)或分号(;)分隔,两种分隔符的效果相同。 (2)自动在写入文件的各输出项之间,加入分隔符逗号“,”;字符类型输出项以双引号作为界限符;写入文件的逻辑型、日期型数据或空值(NULL),是以#号作为数据项的界限符,如#TRUE#、#FALSE#、#1999-10-30#、#NULL#。 Visual Basic程序设计教程

(3)最后一个输出项的后面如果没有逗号或分号,将自动追加回车换行符。 (4)如果语句中没有任何输出项即只有通道号及后面的逗号,将向文件中输出一个空行。 Visual Basic程序设计教程

【例12-3】 利用Write # 语句把数据写入文件 Private Sub Form_Click() Dim nn As Integer, cc As String Open "d:\temp.txt" For Output As #1 nn = 123: cc = "ABCDE" Write #1, nn * 2, 5 > 3 Write #1, cc, Write #1, "hello" Write #1, Write #1, #03/01/2001# Close #1 End Sub Visual Basic程序设计教程

2. Print # 语句。它是一种格式化的文件输出语句,其数据输出格式与Print方法在窗体上输出的格式类似。使用格式如下。 它与Write # 语句的区别在于,Print # 语句完全按程序代码中设定的格式输出数据。其中输出表达式列表的各输出项之间及语句末尾,可用逗号或分号分隔,它们的分隔效果不同(关请参见2.7.3)。 Visual Basic程序设计教程

· 结束各种读写操作以后,必须将打开的文件关闭,否则将会造成数据丢失。 12.5.4 关闭顺序文件 · 结束各种读写操作以后,必须将打开的文件关闭,否则将会造成数据丢失。 · 关闭文件的语句格式为: Close [[#]文件号[,[#]文件号]...] Visual Basic程序设计教程

· 当VB程序执行到End语句或单击窗体关闭按钮时,也会关闭此时尚未关闭的文件。 · 在完成了数据文件的写操作后,当VB程序执行到Close语句,则在关闭并释放文件缓冲区前,会在把缓冲区中的数据写入磁盘后再执行关闭操作,同时释放内存空间。 · 当VB程序执行到End语句或单击窗体关闭按钮时,也会关闭此时尚未关闭的文件。 Visual Basic程序设计教程

12.5.5 读出操作 ·要把数据从顺序文件中读出,应该以Input模式打开文件,然后使用Input # 、Line Input #语句或Input函数从文件中读出数据。通常Input用来读出由Write写入的数据,Line Input和Input函数用来读出由Print写入的数据。 Visual Basic程序设计教程

·1. Input # 语句。从指定的文件中读出数据项,并把它们存入各自的变量中。使用格式为: Input #文件号,变量列表 其中,变量名列表中的变量个数决定了该语句从文件中读取的数据个数。例如,语句: Input #1,nn%,cc$,dd Visual Basic程序设计教程

仅以回车换行符(Chr(13)+Chr(10))作为界限,从文件中读入一整行的字符,并赋予相应的字符型变量。使用格式为: ·2. Line Input # 语句。 仅以回车换行符(Chr(13)+Chr(10))作为界限,从文件中读入一整行的字符,并赋予相应的字符型变量。使用格式为: Line Input #文件号, 字符型变量 Visual Basic程序设计教程

·3.Input函数。从文件中读取指定字符数的字符。使用格式为: 例如b$=Input(10,#1)表示从文件号为1的顺序文件中读出10个字符。 Visual Basic程序设计教程

·4. EOF函数。判断是否已读完了文件中的所有数据(即已到了文件末尾)。使用格式为: 如果指定的文件已经读到了文件末,则函数返回True,否则返回False。 Visual Basic程序设计教程

·5.LOF函数。获取已打开文件的总字节数。如果返回0,表示文件为空。使用格式为: 例如Text1.text=Input(LOF(1),1)表示把文件号为1的文件内容全部读出显示在文本框中。 Visual Basic程序设计教程

【例12-4】利用EOF函数,统计已打开的某文件中的数据个数,通道号为1,统计结果显示在Text1文本框内。其中文件打开和关闭在窗体的Load和UnLoad事件中完成。 Visual Basic程序设计教程

Private Sub Command1_Click() Dim Numb as Integer,ntt as String Do While Not EOF(1) Input #1, ntt Numb = Numb + 1 Loop Text1.Text = Str(numb) End Sub Visual Basic程序设计教程

【例12-5】设计一个应用程序,界面如图图12.6所示。利用窗体输入若干位同学的姓名和计算机成绩,并将它存入文件 中。要求操作过程为 :先击“保存”按钮 cmdSave ,决定要保 存的文件;然后在两 文本框txtName和txtScore中输入姓名和成绩,击“添加”按钮cmdAdd将数据送入文件;击“退出”cmdExit关闭文件,并结束程序运行。 Visual Basic程序设计教程

Visual Basic程序设计教程 Private Sub Form_Load() cmdAdd.Enabled = False End Sub Private Sub cmdSave_Click() Dim Fname as String cdl_1.ShowSave Fname = cdl_1.FileName If Trim(cdl_1.FileTitle) <> "" then Open Fname For Output As #1 cmdAdd.Enabled = True cmdSave.Enabled = False Else Msgbox "必须选择一个文件" End if Visual Basic程序设计教程

Visual Basic程序设计教程 Private Sub cmdAdd_Click() '向文件添加数据 If Trim(txtName.Text) <> "" Then Write #1, Trim(txtName.Text), Val(txtScore.Text) End If txtName.Text = "" :txtScore.Text = "" txtName.SetFocus End Sub Private Sub cmdExit_Click() ' Close #1 Unload Me Visual Basic程序设计教程

【例12-6】利用例12.5输入的数据,在窗体的文本框txtContent中显示所有同学的姓名和计算机成绩,并求出班平均分显 示在文本框txtAverAge中 。设计界面如图所示。 Visual Basic程序设计教程

Visual Basic程序设计教程 Private Sub cmdShow_Click() Dim Sum as Integer,Count as Integer,Name as String, Score as Integer cdl_1.ShowOpen if cdl_1.FileTitle <> "" then Open cdl_1.FileName For Input As #1 Else Msgbox "必须打开文件" Exit sub End if Sum = 0: Count = 0 Visual Basic程序设计教程

Visual Basic程序设计教程 Do While Not EOF(1) Input #1, Name, Score txtContent.Text = txtContent.Text & Name & Score txtContent.Text = txtContent.Text & Chr(13) & Chr(10) '显示信息后换行 Sum = Sum + Score Count = Count + 1 '统计人数 Loop txtAverage = Sum / Count Close #1 End Sub Visual Basic程序设计教程

· 前面介绍了怎样建立顺序文件及如何访问它们以找到特定的信息,访问顺序文件的数据需要从头到尾地依次读写。而在许多应用程序中是要求立即定位特定记录的信息。如自动柜员机的应用程序,需要处理银行数以万计的用户帐号,需要迅速检查特定帐号上的信息。这类即时存取操作可以使用随机文件实现。随机文件的记录可以直接访问,而不必通过搜索其它记录。 12.6 操作随机文件 Visual Basic程序设计教程

·随机文件是由一个个记录所构成的,记录通常是描述一个对象的基本单位,它由若干个相互关联的数据项组成。 12.6.1 什么是随机文件 ·随机文件是由一个个记录所构成的,记录通常是描述一个对象的基本单位,它由若干个相互关联的数据项组成。 ·在随机文件中,文件的访问是按记录进行操作的,每个记录都有一个记录号且长度都是完全相同的。 Visual Basic程序设计教程

·打开随机文件后,可以同时进行读/写操作,读写数据速度较快,数据更新容易。 ·随机文件的数据以二进制格式存储,需要特定的程序使用它们,用文本编辑器打开则难以正确显示。 学号 姓名 计算机成绩 Visual Basic程序设计教程

·用户自定义类型是派生数据类型,它们是使用其它类型的对象构造出来的 12.6.2 记录用户自定义类型 1.定义用户自定义类型 ·用户自定义类型是派生数据类型,它们是使用其它类型的对象构造出来的 Private Type Student Xh as String * 10 Name as String * 8 Score as Integer End Type Visual Basic程序设计教程

·Type定义是用户所定义的一个新的数据类型。在程序中可以使用所定义的类型来声明变量,其方法与VB变量声明相同。 2.访问用户自定义类型的变量 ·Type定义是用户所定义的一个新的数据类型。在程序中可以使用所定义的类型来声明变量,其方法与VB变量声明相同。 Dim Std as Student ·访问用户自定义类型变量的成员与访问控件的属性类似,采用点运算符“.”。例如给Std变量的成员赋值,可以使用下列语句: Std.Xh ="3512354012“ Std.Name="张三“ Std.Score=90 Visual Basic程序设计教程

·随机文件的打开仍用Open语句。使用格式为: 12.6.3 打开和关闭随机文件 ·随机文件的打开仍用Open语句。使用格式为: Open 文件名 [For Random] As [#] 文件号 Len=记录长度 1.如果指定文件名的文件不存在,会自动创建。 2.Random是默认的访问模式。随机文件读/写的访问模式是相同的,文件打开后,可同时进行读/写操作。 3.“Len=记录长度”指定了每条记录的长度,如果设置的记录长度比实际的记录长度短,会产生错误;如果比实际的记录长度长,可以写入,当然会浪费磁盘存储空间。可以用Len()函数来确定记录的长度。 Visual Basic程序设计教程

·关闭随机文件的方法同顺序文件一样,用Close语句即可。 4.文件打开时,记录指针指向第1条记录。 例如以下语句打开了D盘根目录下的Student.dat随机文件: Open "D:\ Student.dat" For Random As # 1 Len=Len(Std) ·关闭随机文件的方法同顺序文件一样,用Close语句即可。 Visual Basic程序设计教程

12.6.4 读写随机文件 1.写操作 Put #文件号,[记录号],变量 2.读操作 Get #文件号,[记录号],变量 12.6.4 读写随机文件 1.写操作 Put #文件号,[记录号],变量 2.读操作 Get #文件号,[记录号],变量 3.Seek函数和Seek语句 (1)Seek函数。使用格式为:Seek(文件号) 函数返回当前的读/写位置,即当前所指的记录号,返回值的类型是长整型。 (2)Seek语句。使用格式为:Seek #文件号,记录号语句设置下一个读/写操作的记录号。 Visual Basic程序设计教程

【例12-7】设计程序,界面如图所示。利用随机文件保存学生的成绩,可以输入学号、姓名和计算机成绩,浏览数据。 Visual Basic程序设计教程

Visual Basic程序设计教程 Private Type student Xh As String * 10 Name As String * 8 Score As Integer End Type Dim Std As student Private Sub Form_Load() Dim Lastrec As Integer, i As Integer Open "d:\student.dat" For Random As #1 Len = Len(Std) Lastrec = LOF(1) / Len(Std) '总记录数=文件长度/记录长度 List1.Clear For i = 1 To Lastrec '读出所有记录 Get #1, i, Std List1.AddItem Std.Xh & " " & Std.Name & " " & Std.Score Next Close #1 End Sub Visual Basic程序设计教程

Visual Basic程序设计教程 Private Sub Command1_Click() Dim lastrec As Integer Std.Xh = Text1.Text Std.Name = Text2.Text Std.Score = Val(Text3.Text) Open "d:\student.dat" For Random As #1 Len = Len(Std) lastrec = LOF(1) / Len(Std) Put #1, lastrec + 1, Std '当前数据追加到最后 Close #1 Call Form_Load '也可以直接用List1.AddItem方法将新记录添加到列表框中 Text1.Text = "" '清空以便下次输入 Text2.Text = "" Text3.Text = "" Text1.SetFocus End Sub Visual Basic程序设计教程

12.7 使用文件系统对象 ·VB6开始允许使用采用FSO(File SystemObje ct,文件系统对象)模型方法。这是 Windows 提供的文件系统对象,它使得文件系统操作变得简单多了。 ·FSO提供了一整套对文件系统进行管理和操作的属性、方法和事件,可以实现文件夹的创建 、改名、移动和删除操作,能够检测文件夹是否存在,可以创建文本文件,也能获取驱动器、文件夹及文件的信息, 12.7 使用文件系统对象 Visual Basic程序设计教程

例如文件名称、创建日期或最近修改日期等。但是FSO不支持二进制文件的创建和操作,因此FSO对象模型还不能完全代替传统的文件访问机制。 下面我们以一个简单的例子,介绍FSO对象模型的使用方法。 Visual Basic程序设计教程

【例12-8】利用FSO对象模型在D盘根目录下建立Test文件夹,并在Test文件夹下建立一个名为testfile的文本文件。 Private Sub Form_Click() Dim Fs As Object,A As Object '利用CreateObject函数返回一个基于FSO的对象(fs) Set Fs = CreateObject("Scripting.FileSystemObject") If Not Fs.FolderExists("D:\test") Then '判断文件夹是否存在 Fs.CreateFolder ("D:\test") '创建文件夹 End If Visual Basic程序设计教程

'利用CreateTextFile方法创建文件作为一个 TextStream 对象(A) Set A = fs.CreateTextFile("D:\test\testfile.txt", True) A.WriteLine ("This is a test.") '向创建的文本文件中写入一行文本 A.Close 'Close 方法刷新缓冲区并关闭文件 End Sub Visual Basic程序设计教程

【例12-9】统计顺序文件中英文字符、数字和其 它字符的个数, 界面如图所示。 12.8 程序举例 Visual Basic程序设计教程

【例12-10】 在D盘根目录下的student.txt的顺序文件中,已存入了若干个学生的姓名(字符型)和某一门课程成绩(数值型)。 设计一个应用程序界面如图 所示。窗体启动时,在列表 框 List1中显示学生姓名和 成绩;单击“排序”按钮在 列表框List2中从高到低显示学生姓名和成绩;单击“保存”按钮把排序后的信息保存到D盘根目录下的student_sort.txt文件中。 Visual Basic程序设计教程