VB程序设计 第九章文件Word文档格式.docx

上传人:b****5 文档编号:18697197 上传时间:2022-12-31 格式:DOCX 页数:28 大小:73.66KB
下载 相关 举报
VB程序设计 第九章文件Word文档格式.docx_第1页
第1页 / 共28页
VB程序设计 第九章文件Word文档格式.docx_第2页
第2页 / 共28页
VB程序设计 第九章文件Word文档格式.docx_第3页
第3页 / 共28页
VB程序设计 第九章文件Word文档格式.docx_第4页
第4页 / 共28页
VB程序设计 第九章文件Word文档格式.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

VB程序设计 第九章文件Word文档格式.docx

《VB程序设计 第九章文件Word文档格式.docx》由会员分享,可在线阅读,更多相关《VB程序设计 第九章文件Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。

VB程序设计 第九章文件Word文档格式.docx

PrintFile1.List(File1.ListCount-1)‘显示文件控件File1内的最后一个文件名

PrintFile1.Pattern‘显示文件控件File1内所有文件的扩展名

PrintFile1.Path‘显示文件控件File1内所有文件的目录路径(含盘符)

EndSub

 

DblClick事件:

例如,双击执行可执行程序

SubfilFile_DblClick()

ChDir(dirDirectory.Path)’改变当前目录

RetVal=Shell(filFile.FileName,1)’执行程序

由于“文件”本身具有Normal、ReadOnly、Archive、Hidden及System属性,因此一般情况下,在文件列表框中是不显示隐藏属性文件的,若想显示,则应将文件列表框中的Hidden属性设置为True,其含义是“要看见隐藏文件”。

三种文件控件重要属性一览表

属性

适用的控件

作用

示例

Drive

驱动器列表

包含当前选定的驱动器名

Drive1.Drive=”C”

path

目录列表和文件列表

包含当前路径(含盘符)

Dir1.Path=”C:

\WINDOWS”

FileName

文件列表

包含选定的文件名

MsgBoxFile1.FileName

Pattern

决定显示的文件类型

File.Pattern=”*.bmp”

三种文件控件重要事件一览表

事件

事件发生的时机

Change

驱动器列表框

目录列表框

驱动器列表框的Chang事件是在选择一个新的驱动器或通过代码改变Drive属性的设置时发生;

目录列表框的Chang事件在双击一个新的目录或通过代码改变Path属性的设置时发生。

PathChang

文件列表框

当文件列表框的Path属性改变时发生

PatternChang

当文件列表框的Pattern属性改变时发生

Click

目录和文件列表框

用鼠标单击时发生

DblClick

用鼠标双击时发生

[例9.1]设置一个文件管理系统。

当用户在文件列表框中单击文件名时输出该文件名,双击一个可执行文件的文件名时就运行该程序。

[例9.1]在myvb\ex9_1\ex9_1.vbp下(三个文件控件之间的连动)

窗体Form2代码

PublicFnameAsString'

文件标识符,窗体2中定义的全局量

PrivateSubDir1_Change()'

将完整的目录路径送给文件列表Path属性

File1.Path=Dir1.Path'

path属性在属性窗口不可见

PrivateSubDrive1_Change()'

改变目录列表中Path属性的驱动器名

Dir1.Path=Drive1.Drive'

PrivateSubForm_Load()

Combo1.AddItem"

所有文件"

工程、窗体文件"

图形、图像文件"

Combo1.ListIndex=0'

指定组合列表框默认显示"

File1.Pattern="

*.jpg;

*.gif;

*.ico;

*.bmp;

*.cur"

'

文件控件内默认列出的文件类型

PrivateSubCombo1_Click()'

单击组合列表框,改变文件控件内所列文件类型

DimitemAsString

item=Choose(Combo1.ListIndex+1,"

*.*"

"

*.frm;

*.VBP"

*.WMF;

File1.Pattern=item'

确定文件列表框所列文件的类型

将此内容放在单击事件过程中也可,但单击事件在这里屏蔽了双击事件

演示时选择一个扩展名为EXE的文件,比如c:

\windows\calc.exe(计算器),其他类型的文件不可用shell打开

PrivateSubFile1_DblClick()

DimRetvalAsLong'

Retval为Shell函数成功调用的返回值为一个任务标识

IfRight(File1.Path,1)="

\"

Then'

当前选定的目录是根目录

Fname=File1.Path+File1.FileName

Else'

当前选定的目录是子目录

Fname=File1.Path+"

+File1.FileName

EndIf

IfRight(File1.FileName,3)="

EXE"

OrRight(File1.FileName,3)="

COM"

Then

Retval=Shell(Fname,1)'

以有指针,正常窗口类型打开文件

Else

Form3.Show

PrivateSubFile1_KeyDown(KeyCodeAsInteger,ShiftAsInteger)'

按Del键删除文件

IfKeyCode=vbKeyDeleteThen'

Del键扫描码

ChDriveDrive1.Drive'

设置缺省驱动器

ChDirFile1.Path'

设置缺省目录

KillFile1.FileName

File1.Refresh'

更新列表框

窗体Form3代码

PrivateSubCommand1_Click()‘显示命令

'

选择组合框内的所有文件或工程、窗体文件选项而显示在文件列表框内的文件即使是图形类文件也不显示

IfForm2.File1.Pattern="

OrForm2.File1.Pattern="

MsgBox("

不是图形、图像文件"

PrintForm2.Fname

Else

Image1.Picture=LoadPicture(Form2.Fname)

PrivateSubCommand2_Click()‘返回命令

UnloadForm3

9.2文件的读写

9.2.1文件及其结构

文件:

存储在外部介质上的数据的集合称为文件。

文件按名存取。

1.记录

由若干个相互关联的数据项组成。

例如,由学生的学习成绩信息组成的记录,它由学号、姓名、各课成绩、总分等数据项组成。

2.文件及其种类

VB文件由纪录组成的,而记录是由字段组成的,字段是由字符组成的。

根据不同的分类标准文件可分为不同的类型。

分类标准

类别

特点

按数据性质

程序文件

存放可以由计算机执行的程序

数据文件

存放普通的数据。

通过程序来存取和管理

按文件存储方式和结构

顺序文件(sequential)

组织比较简单,不能灵活存取和增加数据。

记录可长可短,记录之间是以“换行”字符为分隔符号。

随机文件(random)

记录长度固定,存取灵活方便,速度快易修改。

记录之间没有分隔符。

只要给出纪录号即可。

按数据编码

ASCII文件

可以用字处理软件建立和修改

二进制文件(binary)

不能用普通的字处理软件编辑,占空间小。

可认为(记录长度为1(字节)的随机文件),直接将二进制码存放在文件中,没有什么格式,是最原始的文件类型

它以字节数来定位数据,允许程序按所需的任何方式组织和访问数据。

在VB中文件处理分三个步骤:

打开(或)建立文件;

对文件进行读写操作;

关闭文件。

9.2.2顺序访问模式

1.打开文件

要对文件操作,必须首先打开文件。

格式:

Open“文件名”[For方式][Access存取类型][lock]As[#]文件号[Len=记录长度]

文件名可以是字符串常量,也可以字符串变量(包括文件所在的目录路径)。

(1)方式

OutPut-对文件进行写操作,如果文件不存在,则创建新文件。

如果文件已存在,则覆盖文件中已有的内容。

用于顺序输出方式,打开时文件指针定位在文件开头。

InPut-对文件进行读操作,如果文件不存在,则会出错。

Append-在文件未尾追加纪录,不覆盖文件原有的内容。

如果文件不存在,则创建新文件。

用于顺序输出方式,打开时文件指针定位在文件的尾部。

省略方式,则默认为Random方式打开文件,对于方式为Binary的则为二进制方式打开文件。

(2)存取类型

Read-(只读)、Write-(只写)、ReadWrite-(可读可写)。

(3)lock(允许还是不允许共享该文件)--Shared(共享)、LockRead(锁定读取)、LockWrite(锁定写入)、LockReadWrite(锁定读写)。

(4)文件号

1~511,可以用FreeFile函数获得一个可利用的文件号。

FreeFile[(intRangeNumber)],有参数,返回值为1-225或256-511。

若无参数intRangeNumber就不必使用圆括号,返回值为1-255。

例如:

intFileNumber=FreeFile

Open“student.dat”ForOutputAsintFileNumber

同一个文件可以用几个不同的文件号打开。

但是用output,append方式时必须先将文件关闭不能重新打开。

而当使用input,random或binary方式时不必关闭就可以用不同的文件号打开。

(5)记录长度

记录长度为1~ 32767之间的整数(单位字节),它指定在计算机内存中用于存放文件数据缓冲区的大小,目的在于改善I/O的速度。

缺省为512字节。

对于随机文件,该值就是记录长度,对于顺序文件该值就是缓冲字符数。

例如,打开C:

\VB\SCORE,供写入数据,指定文件号为#1。

OPEN"

C:

\VB\SCORE"

ForOutputAS#1

2.写入命令

把计算机内存中的数据传输到相关联的外部设备并以文件存放的操作称为写(输出)。

将数据写入磁盘文件所用命令是Write#或Print#命令。

(1)Print#文件号,[输出列表]

输入列表是用[{Spc(n)|Tab[(n)]}][表达式列表][;

|,]组成的式子。

分号和逗号分别对应紧凑格式和标准格式。

Print#语句和print方法的输出格式类似。

Print#语句之行后,并不是立即把缓冲区中的内容写入磁盘,只有在关闭文件,缓冲区已满或缓冲区未满但执行了下一个print#语句时才将缓冲区的内容写入磁盘。

保存文本框内容的例子

参见myvb\vb9\ex9_b2

假定文本框的名称为txtTest,文件名为TEST.DAT。

方法1:

把整个文本框的内容一次性地写入文件。

Open"

TEST.DAT"

ForOutputAs#1

Print#1,txtTest.Text

Close#1

方法2:

把整个文本框的内容一个字符一个字符地写入文件。

myvb\vb9\ex9_b2

Open"

Fori=1Tolen(txtTest.Text)

Print#1,Mid(txtTest.Text,i,1);

Nexti

Close#1

myvb\vb9\ex9_b3

[例]

PrivateSubmain()

OpenApp.Path&

"

\abc.dat"

Print#1,"

这是一本历史教科书"

Print#1,'

将一个空白行写入数据文件

标准区1"

;

Tab;

标准区2"

将数据在两个标准区中写入

Hello"

WorLd"

’写入时用空格隔开这两个字符串

Print#1,Spc(5);

5LeadingSpace"

该行前有5个空格

Print#1,Tab(10);

从该行的第10列开始写入字符串

Close#1

'

写入结果:

这是一本历史教科书

标准区1标准区2

HelloWorLd

5LeadingSpace

Hello

(2)Write#文件号,[输出列表]

输出列表是指用“,”或“;

”分隔的表达式。

它与Print的区别是:

Write是以紧凑格式将数据存放在文件中并在数据项之间插入“,”,给字符串加上双引号,将日期型数据用“#”号括起来,以#True#或#False#的格式输出Boolean型数据,空数据(NULL)和出错信息的输出格式分别是#NULL#和#Errorerrorcode#,其中Errorcode代表解释输出错误的错误编号。

Write#语句在将表达式写入到文件后会自动插入一个新行字符,即回车换行符(chr(13)+chr(10))。

myvb\vb9\ex9_b4

DimnameAsString

DimgradeAsInteger

DimstimeAsDate

DimynAsBoolean

name="

许永"

:

grade=3

stime=Now

yn=False

\degree.text"

ForOutputAs1

Write#1,name,grade;

Write#1,name;

stime

grade,NULL

Write#1,name,Now;

yn

写入文件的结果是:

"

3,"

许永"

#2004-11-1814:

44:

59#

3,#NULL#,"

59#,#FALSE#

3.读顺序文件

把数据文件中的数据传输到内存程序中的操作叫做读操作(或称输入、读)。

(1)Input#文件号,变量[,变量,…]

使用input读出数据时,变量的类型应与被读的数据类型相匹配,否则结果可能不正确。

用input语句把读出的数据赋给数值变量时,以遇到的第一个非空格、非回车和换行符作为数据的开始再次遇到空格、回车或换行符作为数值的结束。

对于字符串数据,同样忽略开头的空格回车和换行符。

为了能用Input#语句正确的将文件中的数据读出来,应当在写文件时使用Write#语句而不用Print#语句。

或者使用Print#语句时人为地在各量之间插入逗号分隔。

(2)LineInput#文件号,字符串变量

一次读出一行数据直到遇到回车(chr(13))或回车换行符(chr(13)+chr(10))为止送到变量中,遇到的的回车符和换行符被跳过不送入字符串变量中。

LineInput语句主要用来读取文本文件。

(3)Input$(读取字符数,#文件号)

使用该函数可以随意从文件中读取指定数目的字符。

这个函数只用于用input或binary方式打开的文件。

它与语句input不同,它是把文件当成非格式的字符流来读取,返回它所读出的所有字符,包括逗号、回车符、空白列,换行符,引号和前导空格等。

4.关闭文件

文件不再使用必须将它关闭,否则有可能使数据丢失。

Close[[#]文件号][,[#]文件号]...

例如,Close#1,#2,#3

如果省略了文件号,表示关闭所有已打开的文件。

关闭文件,还有一个Reset语句,其格式为:

Reset,它关闭所有被打开的磁盘文件。

5.与读文件(包括随机、二进制文件)有关的函数和语句

(1)LOF函数

LOF(文件号)

返回一个长整型数,表示用open语句打开的文件的大小,该大小以字节为单位。

在VB中文件的基本单位是纪录,每个纪录的长度默认是128字节,因此对于用VB建立的文件,LOF返回的将是128的整数倍(?

)。

如果是0则说明该文件是空文件。

要取得一个尚未打开文件的大小,应该使用FileLen函数,格式为:

FileLen(文件名)。

如果对于已打开的文件使用该函数,则返回的值表示该文件打开前的长度。

[例]在例myvb\vb9\ex9_b4中建立的degree.text占101字节,用LOF函数去测量也显示为101。

OpenApp.Path&

ForInputAs1

MsgBoxLOF

(1)

(2)EOF函数

EOF(文件号)

返回读写位置。

对于顺序文件用EOF函数可测试是否到文件末尾,到文件未尾时,EOF函数为True,否则为False。

对于随机、二进制文件,当最近一个执行的Get语句无法读到一个完整的记录时返回True,否则返回False。

(3)Loc函数

Loc(文件号)

返回一个长整型数,在已打开的文件中指定当前读/写位置

对于随机文件,Loc返回上一次对文件进行读出或写入的记录号。

对于二进制文件,Loc返回上一次读出或写入的字节位置。

对于顺序文件,返回值是文件中当前字节位置除以128的值。

由于文件只能从头到尾顺序写入或读出,因此,一般不需要使用Loc函数。

随机文件的记录号从1开始,字节文件的起始位置也是1。

(4)Seek函数

Seek(文件号)

Seek函数返回一个用Open语句打开的文件的当前读写位置。

即返回当前定位指针。

对于随机文件,Seek返回文件指针指向的将要读出或写入的记录号。

对于二进制文件和顺序文件,Seek返回将要读出或写入的字节位置。

(5)Seek语句

Seek(文件号,位置)

在open语句打开文件后,操作系统自动生成一个指示文件读、写位置的隐含的文件指针。

Seek语句用来定位文件指针。

对于用Random方式打开的文件,“位置”是下一个操作的记录号。

对于顺序文件,“位置”是下一操作的地址。

在Get或Put语句中的记录号优先于用Seek语句确定的位置。

若文件结尾之后使用Seek操作,则进行文件写入的操作会把文件扩大。

如果企图对一个位置为负数或零的文件使用Seek操作,则会发生错误。

Seek语句和Seek函数的区别:

函数返回文件指针的当前位置。

对于顺序文件返回的是将要读写的文件位置的信息;

对于随机文件,函数返回的是下一个记录号。

而语句则是定位文件指针到指定的位置。

[例]在例myvb\vb9\ex9_b4中建立的degree.text,用Seek语句去读它第一行中的日期数值。

Seek#1,21

Input#1,cd‘定义cd为日期类型的变量

MsgBoxcd

MsgBoxSeek

(1)

显示:

#2004-11-1814:

44

文件内的一个汉字算两个字节,其余的双引号,逗号算一个字节

[例]读文本文件到文本框

假定文本框名称为txtTest,文件名为MYFILE.TXT。

一行一行读参见myvb\vb9\ex9_b2

txtTest.Text="

Open"

MYFILE.TXT"

ForInputAs#1

DoWhileNotEOF

(1)

LineInput#1,InputData

txtTest.Text=txtTest.Text+InputData+vbCrLf‘vb符号常数换行

Loop

Close#1

方法2:

一次性读

如果全是英文能正确读出,否则运行是可

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1