类模块——举例
时间:2022-07-22
本文章向大家介绍类模块——举例,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
类模块一个常用的场景是把一类常用的方法包装起来,这样用起来的时候就方便了。
前面使用Open 进行的文件操作,使用起来不是很方便,但是FileSystemObject里的TextStream使用起来就比较方便了,知道了类之后,就可以使用类对Open的文件操作进行包装。
使用Open读取文件需要3个步骤:
- Open Filename For Binary Access Read As #num_file
- Get #num_file, , b
- Close #num_file
在类模块中肯定也得这3步,但是,参数的传递完全可以不那么复杂了:
- num_file这个参数,完全就可以包装到类模块内部,外部使用不需要出现这个参数。
- Close #num_file这个方法也可以直接放到类模块的内部,因为类具有2个事件Class_Initialize和Class_Terminate,Class_Terminate在类被销毁也就是Set c = Nothing的时候会自动执行,所以Close #num_file就可以放到这个事件中让它自动执行。
插入一个类模块,修改名称为CFile:
Private lFileLen As Long
Private num_file As Integer
'读取len(b)个byte
Function Read(b() As Byte) As Long
Dim ilen As Long
ilen = UBound(b) - LBound(b) + 1
Dim iseek As Long
iseek = VBA.Seek(num_file)
If iseek + ilen > lFileLen Then
ilen = lFileLen - iseek + 1
End If
iseek = iseek + ilen
Get #num_file, , b
Read = ilen
End Function
'以字节方式读取文本
Function OpenFile(Filename As String) As Long
num_file = VBA.FreeFile
Open Filename For Binary Access Read Write As #num_file
lFileLen = VBA.FileLen(Filename)
End Function
Function CloseFile()
Close #num_file
End Function
Private Sub Class_Terminate()
CloseFile
End Sub
外部使用:
Sub TestCFile()
Dim cf As CFile
Set cf = New CFile
cf.OpenFile ThisWorkbook.Path & "test.txt"
Dim b(10) As Byte
cf.Read b
Dim str As String
str = VBA.StrConv(b, vbUnicode)
Debug.Print str
Set cf = Nothing
End Sub
这种对象形式的使用方法比起直接用Open操作文件就方便的多了。
- 通过shell脚本监控sql执行频率(r3笔记第50天)
- 和Null有关的函数(r3笔记第48天)
- 关于查询转换的一些简单分析(二) (r3笔记第68天)
- 跨网络拷贝文件的简单实践(r3笔记第67天)
- 关于enq: TX - allocate ITL entry的问题分析(r3笔记第66天)
- Tensorflow学习:使用Tensorflow搭建深层网络分类器
- 关于interval partitioning(r3笔记65天)
- Spark Tips4: Kafka的Consumer Group及其在Spark Streaming中的“异动”(更新)
- 关于数据库中的一些name(r3笔记第64天)
- 码农的瑞士军刀-脚本语言
- shell基础学习总结(一) (r3笔记第63天)
- 关于sysdba,sysoper,dba的区别(r3笔记第62天)
- 使用句柄实现特定场景的无备份恢复 (r3笔记第61天)
- 关于dual表的破坏性测试(r3笔记第60天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 关于 “栈” 的那点破事
- 【为宏正名】for的妙用你想不到
- Centos 7 下 docker 导入导出镜像 实践笔记
- linux(centos)搭建.net core 运行环境
- 11g RAC 在线存储迁移实现 OCR 磁盘组完美替换
- MAC下 Centos7 下 免账号免密码便捷登录服务器的正确姿势 实践笔记
- AnimatedList 介绍及使用
- Flutter之SliverAppBar
- OpenGL ES 环境搭建
- Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署
- Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署
- docker-compose 安装jenkins的正确姿势 实践笔记
- windows安装nginx注册为服务的正确姿势 并设置开机自启 实践笔记
- windows navicat连接oracle11G 自用 实践笔记
- docker安装官方redis集群并集群连接测试 的正确姿势 自用 实践笔记