正文

 VB基础之四 子过程、数组、文件.TXT, 基本声明与使用2005-10-03 09:54:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/iamben250/5617.html

分享到:

过程分类:Sub 过程 Function 过程 Property 过程
Sub 子过程包括事件过程和通用过程,不返回值
Function 函数过程返回一个值
Property 属性过程可以返回和设置一个值


一.子过程(Sub)的定义与调用

1)Private Sub 对象名_事件名([参数列表]) '事件过程
2)[Private | Public][Static] Sub 过程名([参数列表]) '通用过程
.....
[Exit Sub] '结束过程,返回调用该过程语句的下一条语句继续运行
.....
End Sub

'私有Private和公有Public过程,省略时默认为公有Public过程
'Static表示过程中的局部变量为“静态”变量
'参数列表: [ByVal] 变量名[()][As 数据类型]
'变量名[()]:无括号表示变量,有括号表示数组
'ByVal : 表明其后的形参是按值传递参数,省略或用ByRef,则表明参数是按地址传递
'As 数据类型: 省略时默认为变体型变量

3)Call 过程名(实在参数表)'调用Sub通用过程
'实在参数的个数、类型和顺序,应该与被调用过程的形式参数相匹配
'可以把过程名去掉关键字和实参列表的括号来使用:过程名 [实参1[,实参2……]]


二.函数过程(Function)的定义与调用

1)[Private | Public][Static] Function 函数名([参数列表])[As 数据类型] '函数过程
[语句块]
[函数名=表达式]
[Exit Function]
语句块
[函数名=表达式]
End Function

'函数过程省略[As 数据类型]时默认返回数值型0或字符型空字符串

2)过程名([实参列表]) '调用函数过程
3)Call 窗体名.过程名([实参表]) ' 调用别的窗体中的过程

--------------------------------------------
--------------------------------------------
4)在类模块中,可以先要声明类的实例为对象变量,
Dim 对象变量 AS New 类的实例 '声明一个类的变量
Call 对象变量.方法或属性 '引用类的实例的方法和属性

------------------------------
5)形参数组名()[As 数据类型] '按地址传递的数组声明,能用ReDim改变动态数组的大小
------------------------------

6)对象的过程的声明与调用
Private Sub gcming(Bliang As Control) '声明Bling为控件对象
Bliang.Caption = "你从外部传来了一个Label控件对象" 'Bliang=Label1
End Sub

Private Sub Form_Load() '窗体被加载事件
Call gcming(Label1) '调用Gcming过程,把Label1控件对象传给Bliang
End Sub

-------------------------
-------------------------
三.变量、过程的作用域

Private '定义模块级过程,不能被其它模块调用
Pubilc '定义全局级过程,可以被其它模块用CALL方法调用.
Dim、Static '声明窗体/模块级变量,出现在子过程中时,只作用在本过程中
Dim、Private '声明局部级变量,出现在通用过程时,可以被本窗体/模块子过程调用
Public '声明全局级变量,出现在通用过程时,可以在其他模调用
Static '声明静态变量,在每次调用时保持原来的值
Dim '声明的变量每次被调用过程时,重新初始化
窗体事件过程Private Sub Form_事件名([参数列表])
Private Sub Form_Click() '单击窗体事件
Dim a As String: a = "发生了窗体事件过程" '[局部变量和常数声明]
Print a '语句块(单击窗体时打印出A的值)
End Sub '结束

'控件事件过程Private Sub 控件名_事件名([参数列表])
Private Sub Command1_Click() '控件事件 按钮
Dim a As String: a = "发生了控件事件过程" '[局部变量和常数声明]
Print a '语句块(单击窗体时打印出A的值)
End Sub '结束

'------------------------------------------------------------------------------------

'通用过程定义方法:[ Private | Public ] [ Static] Sub 过程名([参数列表])
'缺省[ Private | Public ]时默认为 Public,模块中所有其它过程访问
'Static 表示过程中的局部变量为“静态”变量
'Sub 声明子过程的名称,参数,代码
' 过程名 过程被调用的变量名

Sub Subgcm(blm1, blm2) '声明一个通用子过程
Dim blm3 As String '[局部变量和常数声明]
If blm1 = 0 Or blm2 = 0 Then '语句块,如果被调用的变量名返回的值为0就
blm3 = "调用的子过程提示有一个得到的值为0 " '语句块1
Print blm3 & " " & "blm1=" & blm1 & " " & "blm2=" & blm2
blm1 = "万事": blm2 = "如意"
Exit Sub '立刻退出子过程,把运算结果返回给调用本过程的语句
End If

blm3 = "调用的子过程提示没有一个得到的值为0" '语句块2
Print blm3 & " " & "blm1=" & blm1 & " " & "blm2=" & blm2
blm1 = "恭喜": blm2 = "发财"
End Sub '结束

'用Call语句调用Sub过程:Call 过程名(实在参数表)
'用InputBox函数弹出一个键盘输入框:InputBox (字符串表达式)

Private Sub Command2_Click() '调用过程 按钮
Dim blmdz1, blmdz2
blmdz1 = InputBox("请输入0或1", "键盘输入blmd1对应值")
blmdz2 = InputBox("请输入0或1", "键盘输入blmd2对应值")
Call Subgcm(blmdz1, blmdz2) 'blmdz1赋值给blm1,blmdz2赋值给blm2.

Print blmdz1 & blmdz2 & "控件过程提示返回了字符型变量blm的值"
End Sub

'-------------------------------------------------------------------------------------------

'函数过程的定义:[ Private | Public ] [ Static] Function 函数名([参数列表])[As 数据类型]
'缺省[ Private | Public ]时默认为 Public,模块中所有其它过程访问
'Static 表示过程中的局部变量为“静态”变量
'函数声明函数名 变量 声明变量类型 返回值类型

Function funhsm(hsbl1, hsbl2) '声明一个通用函数过程
funhsm = "函数名已经赋值" & "hsbl1+hsb12=" & hsbl1 + hsbl2 & "结果为字符型"
If hsbl1 = 0 Or hsbl2 = 0 Then '如果返回的变量值=0就
Print "函数过程有得到的值为0,退出调用过程" & "hsbl1=" & hsbl1 & " " & "hsbl2=" & hsbl2
Exit Function '立刻退出调用过程。
Else
Print "函数过程无得到的值为0,运行本代码" & "hsbl1=" & hsbl1 & " " & "hsbl2=" & hsbl2
End If
End Function '结束函数过程

'Function过程的调用:过程名([实参列表])
Private Sub Command3_Click() '函数过程 按钮
Dim a As String, b
a = InputBox("请输入0或1", "键盘输入hsbl1对应值")
b = InputBox("请输入0或1", "键盘输入hsbl2对应值")
a = funhsm(a, B) '可以看出SUB和Function有用法基本相同
Print "控件过程提示" & a '可以看到A返回的是函数名的值
End Sub
对象是代码和数据的组合,可以作为一个单位来处理。对象可以是应用程序的一部分,比如

可以是控件或窗体。整个应用程序也是一个对象。
每个对象都是用类定义的,控件代表类。直到在窗体上画出这些被称作控件的对象为止,它们

实际上并不存在。在创建控件之时也就是在复制控件类,或建立控件类的实例。这个类实例

就是应用程序中引用的对象。
在设计时操作的窗体是类。在运行时,Visual Basic 建立窗体的类实例
把对象看作是类的原原本本的复制品,从而建立所有对象。一旦它们以单个对象的形式存在

,属性就可改变。例如,如果在窗体上画了三个命令按钮,则每个命令按钮对象都是命令按

钮类的实例。 每个对象都具有一组由类定义的公共的特征和功能(属性、方法和事件)。但

是,每个对象都有自己的名字,都能分别设置成有效或无效,都能放在窗体的不同位置
简单一点来说,“ListBox 控件”就是“列表框类的一个实例”。
对象可提供现成代码,省却书写麻烦。例如,可以自己创建打开文件和保存文件的对话框,
但是你使用 CommonDialog 控件这个对象来代替就省事多了.
对象支持属性、方法和事件。
对象的数据(设置和属性)称为属性
各种可在对象上操作的过程称为方法
事件是可被对象识别的动作,例如单击鼠标和按下键盘键,还可编写代码来响应事件。
改变对象的属性就可改变对象的特性。
方法就是要执行的动作,而属性就是要设置或检索的特性。
有些属性可以在“属性”窗口设置初值,而有些属性需要在运行时通过代码赋值。
在运行时可以设置并可获得值的属性叫做读写属性。在运行时只能读取的属性叫做只读属性
如果将一个属性值存储到一个变量中,则代码执行起来会更快。
同一窗体上放置两个相同的控件时,用不同Name属性值来区别这两个对象,但仍然是同一个类
控件是放在窗体上的,好比放在一个层次上,要引用控件必须先引用窗体
对象层次提供了一种组织结构,它决定了对象间的相互关系以及访问它们的方法。
集合对象有自己的属性和方法。对象集合中的对象作为集合的成员被引用
控件集合包含已给定窗体上的所有控件,集合中的每个成员用索引号从 0 开始顺次编号
如果对集合中的所有对象都必须执行相同操作,则可用集合简化代码。

例如:下列代码遍历控件集合,并在列表框中列出每个成员的名字。
Form 对象:应用程序中的任何窗体
Forms 集合:包含载入的窗体
MDIForm 对象:应用程序中的 MDI 窗体
Object 对象:任何对象
Control 对象:应用程序中的任何控件
Controls集合:包含窗体上的控件
Control 类 :控件的一般变量类型,声明后可以将任何控件引用赋给变量
Controls属性:返回对 Control 对象集合的引用
AddItem 方法:给控件添加项目
Name 属性:返回在代码中用于标识窗体、控件、或数据访问对象的名字
For Each 变量名 In 对象集合名 '针对一个集合中的每个元素,重复执行一组语句体
[语句体]
[Exit For]
[语句体]
Next [变量名]
'变量名 : 用来遍历集合或数组中所有元素的变量。
'对象集合名:对象集合或数组的名称(用户定义类型的数组除外)

Dim MyControl as Control
For Each MyControl In Form1.Controls
List1.AddItem MyControl.Name '把每个控件的名字送到列表框
Next MyControl

Controls!List1.Top = 200 '也可以直接将ListBox 控件的 Top 属性设置为 200

例如:在窗体上将命令按钮从一个容器移动到另一个容器
需要Frame 控件、PictureBox 控件和 CommandButton 控件
Static 变量名 [As [New] 定义类型] '声明变量并分配存储空间
Set object.Container [= 对象名] '返回或设置Form上控件的容器
Container 属性:返回容器控件或窗体

Private Sub Form_Click ()
Static intX as Integer
Select Case intX
Case 0
Set Command1.Container = Picture1
Command1.Top= 0
Command1.Left= 0

Case 1
Set Command1.Container = Frame1
Command1.Top= 0
Command1.Left= 0

Case 2
Set Command1.Container = Form1
Command1.Top= 0
Command1.Left= 0

End Select
intX = intX + 1
End Sub


变量可引用对象。如同给变量赋值一样,变量名往往比变量所含的值短而好记,在运行代码时
为了引用其它对象,应改变变量,引用包含对象的变量比反复引用对象本身有更高的效率.
用 New 关键字创建新对象,这个对象被视为它的类所定义的对象。可用 New 创建集合、窗
体的实例以及类模块中定义的类。
在设计时创建的窗体是类。可用 New 关键字创建这个类的新实例,也可将 New 关键字与
Set 语句并用,将 New 关键字和 Set 语句并用会加快运行速度,因此,这种方法值得推荐

Dim f As Form1
Static A as Integer
Set f = New Form1
f.Caption = "类实例"+A
f.Show
A=A+1


可用 New 关键字从类模块中定义的类创建集合和对象,
例如:New 关键字是如何创建类的实例的。
从“工程”菜单中选择“添加类模块”命令,添加以下代码,本例创建类的新实例,还调用了

包含在类模块中的过程。

Sub ShowFrm()
Dim frmNew As Form1
Set frmNew = New Form1
frmNew.Show '显示窗体
frmNew.WindowState = 1 '1-最小化窗体,0-正常,2-最大化窗体
End Sub

在窗体中添加以下代码.

Public clsNew As Class1
Private Sub Command1_Click()
Set clsNew = New Class1
clsNew.ShowFrm
End Sub

每个对象都使用内存和系统资源。当不再使用对象时及时释放这些资源,这是良好的习惯。
用 Unload 从内存中卸载窗体或控件。
用 Nothing 释放对象变量占用的资源。用 Set 语句将 Nothing 赋予对象变量。


可以通过引用把对象传递给参数,然后在过程内将参数设置成新对象。
Private Sub Form_Click () '窗体1
Form2.GetPicture Picture1
End Sub

Private objX As PictureBox '窗体2
Public Sub GetPicture (x As PictureBox)
Set objX = x '将传递进来的图片框赋予对象变量。
objX.Picture = picture2.Picture '将 Picture 属性值赋予 Form1 的图片框。
End Sub

四.数组维数及数组声明
数组: 是同类型变量的一个有序的集合
数组元素: 即数组中的变量.用下标表示数组中的各个元素如:A(3,2)第3行第2列上的元素
数组维数: 有多少个下标表示有多少维数组如:A(3,2)有两个下标,是二维数组
下标: 下标表示顺序号,取值范围是:下界 To 上界,默认下界=0,如:A(3)=A(0 To 3)
静态数组: 声明时确定了大小的数组如:A(3)
动态数组: 声明时没有给定数组大小如:A()
控件数组: 通过索引号Index来标识各控件如:Text1(0)、Text1(1)、Text1(2)
控件数组的建立:
1)在窗体上画出某控件,设置该控件的Index值为0,表示该控件为数组。
2)在编程时通过Load事件添加其余若干个元素,也可以通过Unload删除某个添加的元素.
3)每个添加的控件数组通过Left 和Top属性,确定其在窗体上的位置,并将Visible=True





1)Dim 数组名(下标) [As 类型] ' 声明一维数组
下标 'A to B的A是下界,A To省略时默认下界=0,B是上界如:1 TO 2,大小=2-1+1=2(列)
As 类型 '省略时默认为变体型

2)Dim 数组名(下标1[,下标2…]) [As 类型] '声明多维数组
Option Base n '从新设置数组下标默认为0的下界,N=1

3)Dim 数组名() [As 类型] '声明维数为空的动态数组

4)ReDim 数组名(下标1[,下标2…]) [As 类型] '重新定义数组动态维数,分配存储空间
ReDim '在过程中,可以多次改变数组的维数,但原来数组中的值会丢失
下标 '可以是常量或有了确定值的变量

5)变量名=Array(下标1,下标2,...)'给数组的各元素赋值,省略下标值时创建长度为0的数组

6)UBound (变量名[,LBound]) '返回一个整型数据,其值为数组某维的最大下标值
UBound '返回一个数组变量的某一维数的上界
LBound '用来确定返回数组哪一维的上界,省略时默认为第1维的上界

vbNewLine换行显示标志,换行符 (Chr(10))、回车符 (Chr(13)) 例:

Private Sub Picture1_Click() 'PictureBox图片框单击事件
Dim a As Variant, b As Variant, i%
A =Array(1,2,3,4,5) '创建整型的5个数组元素并指定每一元素的值
Picture1.Print a(0) ; a(4) ; a(2) ; a(1) ; a(3)
B = Array("姓名","电话","地址") '创建字符串型的3个数组元素并指定每元素的值
Picture1.Print B(1); B(0); B(2) '输出各元素的值
For i = 0 To UBound(a) '终值 =1,2,3,4,5 步长为i+1
Picture1.Print a(i); ""; '输出数组A(i)的值和一个空格
Next i
Picture1.Print (Chr(13)) '输出一个回车符
For i = 0 To UBound(B)
Picture1.Print b(i); (Chr(10)) '输出数组b(i)的值和一个换行符
Next i
Picture1.Print vbNewLine '输出一个换行符
End Sub
数组,可以用相同名字引用一系列变量,并用数字(索引)来识别它们。
使用数组可以缩短和简化程序,因为可以利用索引值设计一个循环,高效处理多种情况。
每一个索引值都分配空间,所以不要不切实际声明一个太大的数组。
控件数组是在设计时通过设置控件的 Index 属性规定的。
变量数组总是连续的,不能从一个数组的中部加载或卸载数组元素。
一个数组中的所有元素具有相同的数据类型
有时希望能够在运行时具有改变数组大小的能力,动态数组就可以在任何时候改变大小。
动态数组最灵活、最方便,有助于有效管理内存。在不使用时,将内存空间释放给系统。

Option base 1 '将缺省的数组下标设为 1,此句必需写在所有过程之前,并只能出现一次
Private Sub Command1_Click()
Dim Lower
Dim MyArray(20), TwoDArray(3, 4) '声明数组变量。
Dim ZeroArray(0 To 5) '取代缺省的下标。
text1.text = LBound(MyArray) '返回 1,使用 LBound 函数来测试数组的下界。
text2.text = LBound(TwoDArray, 2) '返回 1,返回第二维下标的下界
text3.text = LBound(ZeroArray) '返回 0,下标用TO来指定下界,不是缺省下标,不改变
End Sub

Private Sub Command2_Click() '定义动态数组大小
Dim MyArray() As Integer '声明动态数组。
ReDim MyArray(10) '大小重定为 10 个元素。
For I = 1 To 10 '循环 10 次。
MyArray(I) = I + 20 '初始化数组。
Next I
Text1.Text = MyArray(3)
x = InputBox("改变数组的大小保留原值", , 6)
ReDim Preserve MyArray(x) '重新定义数组大小,保留原来的元素数据
Text2.Text = MyArray(3)
x = InputBox("改变数组的大小不保留原值", , 5)
ReDim MyArray(x) '重新定义数组大小,原来的元素会被清除
Text3.Text = MyArray(3)
End Sub
不同类型的变量可以组合起来用来创建用户定义的类型,当需要创建单个变量来记录多项相关
的信息时,用户定义类型是十分有用的。
用 Type 语句创建用户定义的类型,该语句必须置于模块的声明部分。
用户定义类型可以包含一个固定大小的数组,也可以包含动态数组。
可以采用访问对象中的属性的方法来访问用户定义类型中数组的值。
Type 语句只能在模块级使用。如果要在类模块中使用,则必须声明为私有Private。


Byte二进制数 %Integer整数 &Long长整型 !Single实数 #Double双精度型 @Currency货币
Boolean真假值 Date日期和时间 Object 对象 String字符串 Variant可变类型

Type 自定义类型名 '声明一个由不同类型的变量组合起来的集合名称
元素名 As 类型名 '定义集合中一个元素体的变量名和类型

数组名[(下标)] As 类型名 '定义集合中一个数组元素体的数组名和类型,可以是动态数组
End Type

自定义类型名 '一般在标准模块(.bas)中定义,默认是Public全局级
元素名 '表示自定义类型中的一个成员,可以是定长字符串
下标(可选) '表示是数组,
类型名 '为标准类型,每个元素的类型可以不同

Dim 自定义函数名 As 自定义类型名 '以自定义函数名来调用自定义类型集合
ReDim 函数名.数组名[(下标)] '以访问对象中属性的方法来访问自定义数组的值
函数名.元素名=表达式 '以访问对象中属性的方法来给元素名赋值

Private Type Zidingyi '创建用户自定义的类型。
ID As Integer '定义元素的数据类型。
Name As String * 20 '最多20个字符
shuzu() As String '动态数组
Phone As Long '长整型
HireDate As Date '日期时间型
End Type

Private Sub Command3_Click()
Dim Hanshuming As Zidingyi '调用自定义类型集合
Hanshuming.ID = 2
ReDim Hanshuming.shuzu(3)
Hanshuming.shuzu(1) = "给动态数组赋值"
Text1.Text = Hanshuming.ID
Text2.Text = Hanshuming.shuzu(1)
Text3.Text = Hanshuming.HireDate
End Sub
With 语句可以对某个对象执行一系列的语句,而不用重复指出对象的名称。
可以将一个 With 块放在另一个之中,而产生嵌套的 With 语句。
不能用一个 With 语句来设置多个不同的对象。
建议您不要跳入或跳出 With 块,这样的话临时变量将保留在内存中,直到您退出该过程

With 变量名 '在一个单一对象或一个用户定义的类型上执行一系列的语句
.元素名=表达式 '可以省略变量名来访问自定义类型集合的元素体
.........
.数组名[(下标)]=表达式
End With

Private Sub Command4_Click()
Dim C As Zidingyi '调用自定义类型集合
With Form1 '在窗体对象中执行多行语句
.caption = "缺省对象名"
.Left = 3333 '横坐标
.top = 3333 '纵坐标
With C
.ID = 5 '相当于Form1.Zidingyi.ID
ReDim .shuzu(3)
.shuzu(3) = "动态数组"
End With
End With
Text1.Text = C.ID
Text2.Text = C.shuzu(3)
Text3.Text = C.HireDate
End Sub
一、驱动器列表框,目录列表框,文件列表框的重要属性.事件
1)驱动器列表框(DriveListBox):用来显示当前机器上的所有盘符
Drive属性 '包含当前选定的驱动器名Drive1. Drive="C"
Change '驱动器(单击)和目录列表框(双击)内容改变的事件

2)目录列表框(DirListBox) :用来显示当前盘上的所有文件夹
Path属性 '包含当前目录和文件列表框路径Dir1.Path="C:\WINDOWS"
ListIndex '返回或设置控件中当前选择项目的索引
ListCount '返回控件的列表部分项目的个数
Click '用于目录或文件列表框的单击事件

3)文件列表框(FileListBox) :用来显示当前文件夹下的所有文件名
Pattern属性 '决定显示的文件列表框文件类型File1.Pattern="*.BMP"
FileName属性 '包含选定的文件列表框文件名MsgBox (File1.FileName)
DblClick '用于文件列表框的双击事件
PathChange '用于文件列表框的改变Path属性时的事件
PattenChange '用于文件列表框Pattern属性改变时的事件


4)常用的文件操作语句和函数-----------------------
ChDrive "驱动器" '改变当前驱动器
CurDir [(驱动器)] '返回一个驱动器的当前目录,驱动器缺省值时返回当前驱动器目录路径
ChDir 文件夹名 '改变当前操作目录路径,但不改变系统默认驱动器路径
MkDir 文件夹名 '创建一个新的目录
RmDir 文件夹名 '删除没有文件的一个存在的空目录
Kill 文件名 '删除文件可以使用通配符*,?
FileCopy 源文件名 目标文件名 '复制一个未打开的文件
Name 旧文件名 AS 新文件名 '重新命名一个未打开的文件或目录
Refresh 属性 '当目录结构发生变化时可以用来更新列表
FreeFile[(参数)] '生成一个尚未使用的文件号,0-缺省值反回1-255,1-返回256-511


二、常用语句和事件:
Dir1.Path = Drive1.Drive '返回驱动器下的目录列表
File1.Hidden = False '不以原控件的属性特征显示文件
File1.Path = Dir1.Path '返回选中的文件夹路径下的文件列表
File1.Pattern = Text1.Text '则更新文件列表框指定的类型
Text1.SelStart = 0 '返回选择出的范围起点
Text1.SelLength = Len(Text1.Text) '返回选择出的范围长度
On Error GoTo DriveHandler '一个错误发生时无条件跳到行号处继续执行
On Error Resume Next '一个错误发生时继续执行发生错误语句之后的语句
On Error GoTo 0 '禁止当前过程中任何已启动的错误处理程序
setfocus '将焦点移至指定的控件或窗体
GotFocus() '焦点进入对象或子控件事件
Click() '单击事件
Unload Me '从内存中卸载当前窗体
Unload(Cancel As Integer) '退出事情

RGB(red, green, blue) '返回红蓝绿0~255之间的颜色
object.Size [= number] '返回指定路径中的字体大小值


三、文件的有关概念
记录 :计算机处理数据的基本单位(由若干个相互关联的数据项组成)
文件 :记录的集合,相当于一张表。
文件类型:顺序文件、随机文件、二进制文件。
访问模式:计算机访问文件的方式(VB中有顺序、随机、二进制三种访问模式)


------------顺序访问模式的文件的打开,写入,关闭,读出------------------------
1)Open “文件名” For 模式 As [#] 文件号 [Len=记录长度] '打开文件
文件名 : 可以是字符串常量或变量,可以包括目录、文件夹及驱动器盘符
模式 : 可以是OutPut,打开写入;Input,打开读入;Append,打开加入记录
文件号 : 代表一个被打开的文件,在关闭之前不可以被其它文件所使用
记录长度: 随机访问方式时该值就是记录长度。顺序文件时该值就是缓冲字符数。

2)Print #文件号,[输出列表] '把列表的数据一次性写入文件号里
3)Write #文件号,[输出列表] '把列表用逗号分隔的数值或字符串表达式写入文件号里
4)Close [#]文件号[,[#]文件号]…… '关闭指定的文件号
5)Input #文件号,变量列表 '从文件中读出数据分别赋给指定的变量与Write #配套
6)Line Input #文件号,字符串变量 '读出一行数据赋给变量,与Print #配套
7)Input$(读取的字符数,#文件号) '该函数可以读取指定数目的字符
'读文件有关的两个函数,LOF():返回某文件的字节数,EOF():检查指针是否到达文件尾

------------随机访问模式的文件的打开,写入,关闭,读出--------------
Open “文件名” For Random As [#] 文件号 [Len=记录长度] '打开文件
'打开后可以同时写入和读出,但要指明记录的长度,默认为128字节
Close #文件号 '关闭文件
Get [#]文件号,[记录号],变量名 '从文件号中记录号指定的内容读入变量名中
Put [#]文件号,[记录号],变量名 '将变量内容写入文件号的指定记录号位置里

------------二进制访问模式的文件的打开,写入,关闭,读出--------------
Open “文件名” For Binary As [#] 文件号 [Len=记录长度] '存放二进制码到文件中
Close #文件号 '关闭文件
Sub shuaxin() '定义一个默认为公有的Public过程
Label1.Caption = "当前驱动器 " & Drive1.Drive
Label2.Caption = "当前文件名 " & File1.FileName
Label3.Caption = "当前文件夹 " & Dir1.Path
Label4.Caption = "文件的位置 " & File1.Path
Label5.Caption = "程序的目录 " & CurDir(Dir1.Path)
Label6.Caption = "系统的目录 " & CurDir()
End Sub

Private Sub Form_Load()
Drive1.Drive = "e:" '设置当前驱动器
End Sub

Private Sub Command9_Click()
End
End Sub

Private Sub Text2_Change() 'Text内容属性改变事件
File1.Pattern = Text2.Text '显示指定扩展名的文件
End Sub

Private Sub Drive1_Change() 'Drive属性改变事件
On Error Resume Next '乎略选择光驱时的出错
Dir1.Path = Drive1.Drive '返回驱动器下的目录列表
File1.Path = Dir1.Path '返回目录下的文件列表
Call shuaxin '调用公有子过程
End Sub

Private Sub Dir1_Change() 'Path属性改变事件
File1.Path = Dir1.Path '返回目录下的文件列表
Call shuaxin '调用公有子过程
End Sub

Private Sub File1_Click() '文件列表单击事件
Text1.Text = File1.FileName '返回选中的文件名
Call shuaxin '调用公有子过程
End Sub

Private Sub Command1_Click() '建立文件夹
Dim A As String
A = InputBox("请输入文件夹名", "创建文件夹")
Text1.Text = A '检查新建文件夹名
On Error GoTo tiao '当文件夹已经存在时出错跳过
MkDir Dir1.Path + "\" + A '在当前文件夹目录下创建a文件夹
Dir1.Refresh '更新文件夹列表
tiao:
Call shuaxin '调用公有子过程
End Sub

Private Sub Command2_Click() '删除文件夹
On Error GoTo t '文件夹不存在时出错,跳过
RmDir Dir1.Path '删除当前目录下的空文件夹
t:
Call shuaxin '调用公有子过程
End Sub

Private Sub Command3_Click() '建立文件名
Dim B As String
B = InputBox("请输入文件名", "创建文本文件")
Open Dir1.Path + "\" + B + ".TXT" For Append As #1
Close 1 '在当前目录下打开加入记录时如果当前文件不存在会自动创建
File1.Refresh '刷新文件列表
Call shuaxin '调用公有子过程
End Sub

Private Sub Command4_Click() '删除文件名
Kill Dir1.Path + "\" + File1.FileName
File1.Refresh '刷新文件列表
Call shuaxin '调用公有子过程
End Sub

Private Sub Command5_Click() '打开显示文件内容
On Error GoTo shan
Dim WBNyong
Open Dir1.Path + "\" + File1.FileName For Input As #1
Text1.Text = StrConv(InputB$(LOF(1), 1), vbUnicode)
shan:
Call shuaxin '调用公有子过程
End Sub

Private Sub Command6_Click() '保存文本内容
On Error GoTo Wshan '没有选择文件名时出错我闪
Open Dir1.Path + "\" + File1.FileName For Output As #1
Print #1, Text1.Text '写入文本信息
Close #1
Wshan:
Call shuaxin '调用公有子过程
End Sub

Private Sub Command7_Click() '复制文件A到B中
Dim C As String, D As String
On Error GoTo shan '文件已经存在时出错,跳过
C = Dir1.Path + "\" + File1.FileName
D = Dir1.Path + "\" + File1.FileName + "(复件)"
FileCopy C, D '复制文件
File1.Refresh '刷新文件列表
shan:
Call shuaxin '调用公有子过程
End Sub

Private Sub Command8_Click() '从新命名文件名
On Error GoTo Wshan '没有选择文件名时出错闪人
Dim E As String, F As String
E = Dir1.Path + "\" + File1.FileName
F = InputBox("请输入新文件名", "修改文件名")
Name E As Dir1.Path + "\" + F + ".TXT"
File1.SetFocus '将焦点移至文件列表
File1.Refresh '刷新文件列表
Wshan:
Call shuaxin '调用公有子过程
End Sub

阅读(8562) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册