第 十六 讲
基本课题:记事本管理功能的设计(二)
授课日期 |
04.10.28 |
04.10.28 |
授课班级 |
03级计算机5、6班 |
03级计算机7、8班 |
教 学 目 的 与 要 求:
本讲补充数据文件的有关知识,要求同学们掌握顺序文件的打开、读写和关闭操作。
教 学 的 重 点、难 点:
重点、难点: 用对话框实现记事本的管理功能
对 教 材 的 处 理 和 意 见:
以教材为主,联系实际情况及时做补充
四 文件系统(补充)
数据文件的类型:
1.顺序型:连续存放文本文件;
记录:计算机处理数据的基本单位,它是由若干个相互关联的数据项组成。
2.随机型:用于有固定长度记录结构的文本数据或者二进制数据;
3.二进制型:二进制文件的数据是以二进制形式保存;
文件操作的一般步骤:打开文件——>读写文件――>关闭文件
(一) 顺序文件
1.顺序文件的打开:
格式:Open 文件名 For {Input| Output| Append} As 文件号
说明:
Input:打开一个文件,将对该文件进行读操作。
Output:在磁盘上创建一个新的顺序文件,文件打开后文件指针位于文件开头,准备向文件写入数据,磁盘上的同名文件将被覆盖。
Append:用来打开或创建一个新的顺序文件,文件打开后文件指针位于文件的末尾,准备向文件的尾部追加式写入数据。若磁盘上没有该文件,则创建一个新文件。
文件号:用来标识打开文件的文件句柄,必须是1到511之间的整数。打开的文件将通过<文件号>来进行读写操作。
如:要打开C:\VB目录下一个文件名为SCORE的文件,供写入数据,指定文件号为#1,则命令应为:Open “C:\VB\SCORE” For Output AS #1
2.顺序文件的写入:
写文件的语句有两种:
(1)Print#文件号, 数据
数据:输出列表,指[{Spc(n)|Tab[(n)]}][表达式列表][;|,]
例7 利用Print#语句把数据写入文件。
Open "L:11.doc" For Output As #1 '打开文件供输出
Print #1, "This is a test"
Print #1, '输出一个空行
Print #1, "Zone 1"; Tab(20); "Zone 2"
Print #1, "Hello"; " "; "World" '用空格分隔字符串
Print #1, Spc(5); "5 leading; spaces" '先输出5个前导空格,再输出字符串
Print #1, Tab(10); "Hello" '在第10列上输出字符串
Close #1 '关闭文件
在实际应用中,经常把一个文本框的内容以文件的形式保存在磁盘上,并有下列两种方法。假定文本框的名称为txtTest,文件名为11.doc。
方法1:把整个文本框的内容一次性地写入文件。
Open "L:\11.doc" For Output As #1
Print #1, TXTTEST.Text
Close #1
方法2:把整个文本框的内容一个字符一个字符地写入文件。
Open "L:\11.doc" For Output As #1
For i = 1 To Len(TXTTEST.Text)
Print #1, Mid(TXTTEST.Text, i, 1);
Next i
Close #1
(2)Write#文件号,数据
基本上与Print #语句相同,区别在于Write#是以紧凑格式存放,即在数据项之间插入“,”,并给字符串加上双引号。
例:Write #1,”One”,”Two”,123
结果:”One”,”Two”,123
注意:Print #常与Line Input #配合使用;Write #语句常与Input #配合使用。
3.顺序文件的关闭:
Close 文件号1[,文件号2,…]
4.顺序文件的读取:
读顺序文件的语句有下列三种:
(1)Input # 文件号,变量列表
功能:从文件中读出数据,并将读出的数据分别赋给指定的变量。
注意:为了能够用Input # 将文件中的数据正确地读出,在将数据写入文件时,要使用Write #语句而不是使用Print#语句。
(2)Line Input#文件号 ,字符串变量
功能:从文件中读出一行数据,并将读出的数据赋给指定的字符串变量。
注意:读出的数据中不包含回车符及换行符。
(3)Input$ (读取的字符数,#文件号)
调用该函数可以读取指定数目的字符。
与读文件(包含随机文件,二进制文件)有关的的重要函数有两个:LOF和EOF函数。
LOF函数:返回某文件的字节数。
如:LOF(1)返回#1文件的长度,如果返回值为0,表示该文件是一个空文件。
EOF函数:返回一个表示文件指针是否达到末尾的值。当到文件末尾时,值为True,否则值为False。对于顺序文件用EOF函数测试是否到文件尾。
将一个文本文件的内容读入文本框的方法:
假定文本框名称为txtTest,文本文件名为F:\11.doc
方法一:把文本文件的内容一行一行地读入文本框。
TXTTEST.Text = " "
Open "L:\11.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, inputdata
TXTTEST.Text = TXTTEST.Text + inputdata + vbCrLf
Loop
Close #1
方法二:把文本文件的内容一次性读入文本框。
TXTTEST.Text = " "
Open "L:\11.txt" For Input As #1
TXTTEST.Text = Input(LOF(1), 1)
Close #1
方法三:把文本文件的内容一个字符一个字符地读入文本框。
Dim inputdata As String ‘* 1
TXTTEST.Text = " "
Open "L:\11.txt" For Input As #1
Do While Not EOF(1)
Input #1, inputdata
TXTTEST.Text = TXTTEST.Text + inputdata
Loop
Close #1
(二)随机文件
1.随机文件的打开与关闭
打开:Open 文件名 [for Random]As 文件号 Len=记录长度
注意:可用Len()函数返回记录长度。
2.随机文件的读写操作
1) 把记录读入变量:Get #文件号,记录号, 变量名
功能:从磁盘文件将一条由记录号指定的记录内容读入变量中。
注意:记录号是大于1的整数,表示对第几条记录进行操作。如果忽略记录号,则表示读出当前记录后的那条记录。
2) 把数据写入随机文件中:Put #文件号,记录号, 变量名
功能:将一个记录变量的内容写入所打开的磁盘文件中指定的记录位置处。
注意:记录号是大于1的整数,表示写入的是第几条记录。如果忽略记录号,则表示在当前记录后插入一条记录。
3) 添加记录:记录数=文件记录数+1
4) 删除记录:拷贝至新文件+删除老文件
作业:课本P253 例12-8
(三)二进制文件
二进制文件与随机文件类似,惟一不同是:不必限制于固定长度,可以用喜欢的方式来存取文件。
1.建立和打开二进制文件:
Open 文件名 For BinaryAs文件号
2.读写二进制文件:
Get#文件号,字节数, 变量名
Put#文件号,字节数, 变量名
注意:
Seek(<文件号>)函数用来返回当前文件指针的位置;
Seek语句(Seek<文件号>,<字节数>)用来将文件指针定位到<字节数>处。
3.关闭二进制文件:
Close#文件号
例9 编写一个复制文件的程序
Private Sub Form_Load()
Dim char As Byte
Dim filenum1, filenum2 As Integer
filenum1 = FreeFile
'打开源文件
Open "c:\student.dat" For Binary As #filenum1
filenum2 = FreeFile
'打开目标文件
Open "C:\student.bak" For Binary As #filenum2
Do While Not EOF(filenum1)
'从源文件读出一个字符
Get #1, , char
'将一个字节写入目标文件
Put #2, , char
Loop
Close #filenum1
Close #filenum2
End Sub
五记事本文档管理功能的实现
打开上一讲的文本编辑器
添加公共对话框控件,设置其属性并编写文件主菜单中的打开、新建和保存功能的代码。
五 RichTextBox控件简介
RichTextBox 控件不仅允许输入和编辑文本,同时还提供了标准 TextBox 控件未具有的、更高级的指定格式的许多功能。
语法
RichTextBox
说明
RichTextBox 提供了一些属性,对于控件文本的任何部分,用这些属性都可以指定格式。为了改变文本的格式,首先要选定它。只有选定的文本才能赋予字符和段落格式。使用这些属性,可把文本改为粗体或斜体,或改变其颜色,以及创建上标和下标。通过设置左右缩进和悬挂式缩进,可调整段落的格式。
RichTextBox 控件能以 rtf 格式和普通 ASCII 文本格式这两种形式打开和保存文件。可以使用控件的方法(LoadFile 和 SaveFile)直接读写文件,或使用与 Visual Basic 文件输入/输出语句联结的、诸如 SelRTF 和 TextRTF 之类的控件属性打开和保存文件。
通过使用 OLEObjects 集合,RichTextBox 控件支持对象的嵌入。插入到控件中的每个对象,都代表 OLEObject 对象。用这样的控件,就可以创建包含其它文档或对象的文档。例如,可创建这样的文档,它有一个嵌入的 Microsoft Excel 电子数据表格、或 Microsoft Word 文档、或其它已在系统中注册的 OLE 对象。为了把一个对象插入到 RichTextBox 控件中,只需简单地拖动一个文件(例如 在Windows 95“资源管理器”中的拖动),或拖动的是另一应用程序(如 Microsoft Word)所用文件的一个突出显示的区域,然后将所拖内容直接放入控件。
RichTextBox 控件支持 OLE 对象的剪贴板和 OLE 拖/放操作。从剪贴板中粘贴进一个对象时,它被插在当前插入点处。一个对象被拖放到控件时,插入点将跟踪着鼠标光标的移动,直至鼠标按钮释放时该对象即被插入。这种行为和 Microsoft Word 的一样。
使用 SelPrint 方法,可以打印 RichTextBox 控件的全部或部分文本。
因为 RichTextBox 是一个数据绑定控件,通过 Data 控件可以把它绑定到 Microsoft Access 数据库的 Binary 或 Memo 字段上,也可把它绑定到具有相同容量的其它数据库字段上(例如 SQL 服务器中的 TEXT 数据类型的字段)。
标准 TextBox 控件用到的所有属性、事件和方法,RichTextBox 控件几乎都能支持,例如 MaxLength、MultiLine、 ScrollBars、SelLength、SelStart 和 SelText。对于那些可以使用 TextBox 控件的应用程序,也可以很容易地使用 RichTextBox 控件。而且,RichTextBox 控件并没有和标准 TextBox 控件一样具有 64K 字符容量的限制。
使用 RichTextBox 控件
|