VB.NET如何获取任何格式文件的文字信息Option Explicit
'mTextUTF.bas
'模块:UTF文本文件访问
'作者:zyl910
'版本:1.0
'日期:2006-1-23
'== 说明 ===================================================
'支持Unicode编码的文本文件读写 。暂时支持ANSI、UTF-8、UTF-16LE、UTF-16BE这几种编码文本
'== 更新记录 ===============================================
'[V1.0] 2006-1-23
'1.支持最常见的ANSI、UTF-8、UTF-16LE、UTF-16BE这几种编码文本
'## 编译预处理常数 #########################################
'== 全局常数 ===============================================
'IncludeAPILib:引用了API库,此时不需要手动写API声明
'## API ####################################################
#If IncludeAPILib = 0 Then
'== File ===================================================
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Long) As Long
Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Long) As Long
Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long
Private Declare Function SetFilePointer Lib "kernel32" (ByVal hFile As Long, ByVal lDistanceToMove As Long, lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
Private Const INVALID_HANDLE_VALUE = https://www.04ip.com/post/-1
Private Const GENERIC_READ = H80000000
Private Const GENERIC_WRITE = H40000000
Private Const FILE_SHARE_READ = H1
Private Const FILE_SHARE_WRITE = H2
Private Const Create_NEW = 1
Private Const Create_ALWAYS = 2
Private Const OPEN_EXISTING = 3
Private Const OPEN_ALWAYS = 4
Private Const TRUNCATE_EXISTING = 5
Private Const FILE_ATTRIBUTE_NORMAL = H80
Private Const FILE_BEGIN = 0
Private Const FILE_CURRENT = 1
Private Const FILE_END = 2
'== Unicode ================================================
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByRef lpWideCharStr As Any, ByVal cchWideChar As Long) As Long
Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByRef lpWideCharStr As Any, ByVal cchWideChar As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByRef lpDefaultChar As Any, ByVal lpUsedDefaultChar As Long) As Long
Private Const CP_UTF8 As Long = 65001
#End If
'###########################################################
'Unicode编码格式
Public Enum UnicodeEncodeFormat
UEF_ANSI = 0 'ANSI DBCS
UEF_UTF8 'UTF-8
UEF_UTF16LE 'UTF-16LE
UEF_UTF16BE 'UTF-16BE
UEF_UTF32LE 'UTF-32LE
UEF_UTF32BE 'UTF-32BE
UEF_Auto = -1 '自动识别编码
'隐藏项目
[_UEF_Min] = UEF_ANSI
[_UEF_Max] = UEF_UTF32BE
End Enum
'ANSI DBCS方式的文本所使用的代码页 。默认为0,表示使用系统当前代码页 。可以利用该参数实现读取其他代码编码的文本 , 比如想在 简体中文平台下 读取 繁体中文平台生成的txt,就将它设为950
Public UEFCodePage As Long
'判断BOM
'返回值:BOM所占字节
'dwFirst:[in]文件最开始的4个字节
'fmt:[out]返回编码类型
Public Function UEFCheckBOM(ByVal dwFirst As Long, ByRef fmt As UnicodeEncodeFormat) As Long
If dwFirst = HFEFF Then
fmt = UEF_UTF32LE
UEFCheckBOM = 4
ElseIf dwFirst = HFFFE0000 Then
fmt = UEF_UTF32BE
UEFCheckBOM = 4
ElseIf (dwFirst And HFFFF) = HFEFF Then
fmt = UEF_UTF16LE
UEFCheckBOM = 2
ElseIf (dwFirst And HFFFF) = HFFFE Then
fmt = UEF_UTF16BE
UEFCheckBOM = 2
ElseIf (dwFirst And HFFFFFF) = HBFBBEF Then
fmt = UEF_UTF8
UEFCheckBOM = 3
Else
fmt = UEF_ANSI
UEFCheckBOM = 0
End If
End Function
'生成BOM
'返回值:BOM所占字节
'fmt:[in]编码类型
'dwFirst:[out]文件最开始的4个字节
Public Function UEFMakeBOM(ByVal fmt As UnicodeEncodeFormat, ByRef dwFirst As Long) As Long
Select Case fmt
Case UEF_UTF8
dwFirst = HBFBBEF
UEFMakeBOM = 3
Case UEF_UTF16LE
dwFirst = HFEFF
UEFMakeBOM = 2
Case UEF_UTF16BE
dwFirst = HFFFE
UEFMakeBOM = 2
Case UEF_UTF32LE
dwFirst = HFEFF
UEFMakeBOM = 4
Case UEF_UTF32BE
dwFirst = HFFFE0000
UEFMakeBOM = 4
Case Else
dwFirst = 0
UEFMakeBOM = 0
End Select
End Function
'判断文本文件的编码类型
'返回值:编码类型 。文件无法打开时,返回UEF_Auto
'FileName:文件名
Public Function UEFCheckTextFileFormat(ByVal FileName As String) As UnicodeEncodeFormat
Dim hFile As Long
Dim dwFirst As Long
Dim nNumRead As Long
'打开文件
hFile = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, ByVal 0)
If INVALID_HANDLE_VALUE = https://www.04ip.com/post/hFile Then'文件无法打开
UEFCheckTextFileFormat = UEF_Auto
Exit Function
End If
'判断BOM
dwFirst = 0
Call ReadFile(hFile, dwFirst, 4, nNumRead, ByVal 0)
nNumRead = UEFCheckBOM(dwFirst, UEFCheckTextFileFormat)
'Debug.Print nNumRead
'关闭文件
Call CloseHandle(hFile)
End Function
'读取文本文件
'返回值:读取的文本 。返回vbNullString表示文件无法打开
'FileName:[in]文件名
'fmt:[in,out]使用何种文本编码格式来读取文本 。为UEF_Auto时表示自动判断,且在fmt参数返回文本所用编码格式
Public Function UEFLoadTextFile(ByVal FileName As String, Optional ByRef fmt As UnicodeEncodeFormat = UEF_Auto) As String
Dim hFile As Long
Dim nFileSize As Long
Dim nNumRead As Long
Dim dwFirst As Long
Dim CurFmt As UnicodeEncodeFormat
Dim cbBOM As Long
Dim cbTextData As Long
Dim CurCP As Long
Dim byBuf() As Byte
Dim cchStr As Long
Dim I As Long
Dim byTemp As Byte
'判断fmt范围
If fmtUEF_Auto Then
If fmt[_UEF_Min] Or fmt[_UEF_Max] Then
GoTo FunEnd
End If
End If
'打开文件
hFile = CreateFile(FileName, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, ByVal 0)
If INVALID_HANDLE_VALUE = https://www.04ip.com/post/hFile Then'文件无法打开
GoTo FunEnd
End If
'判断文件大小
nFileSize = GetFileSize(hFile, nNumRead)
If nNumRead0 Then '超过4GB
GoTo FreeHandle
End If
If nFileSize0 Then '超过2GB
GoTo FreeHandle
End If
'判断BOM
dwFirst = 0
Call ReadFile(hFile, dwFirst, 4, nNumRead, ByVal 0)
cbBOM = UEFCheckBOM(dwFirst, CurFmt)
'恢复文件指针
If fmt = UEF_Auto Then '自动判断
fmt = CurFmt
'cbBOM = cbBOM
Else '手动设置编码
If fmt = CurFmt Then '若编码相同,则忽略BOM标记
'cbBOM = cbBOM
Else '编码不同,那么都是数据
cbBOM = 0
End If
End If
Call SetFilePointer(hFile, cbBOM, ByVal 0, FILE_BEGIN)
cbTextData = https://www.04ip.com/post/nFileSize - cbBOM
'读取数据
UEFLoadTextFile = ""
Select Case fmt
Case UEF_ANSI, UEF_UTF8
'判断应使用的CodePage
CurCP = IIf(fmt = UEF_UTF8, CP_UTF8, UEFCodePage)
VB,VBA, VB.net 都有什么区别和共同点?VB是是一种编程语言 。VBA主要VB是office上的应用,VB.net可以说是VB的最新版本,如果就是业余或者刚入门的话,语法什么的和VB几乎完全一样 。只是语法上面,要求比VB要求规范,比方说VB6.0里面Text1="1"读的出来 , VB.net就会报错,一定要textbox1.text="1"才可以 。对于初学者来说,VB.net这种规范要求有益无害 。
如果你想学的话,最好学VB.net,一来功能强,二来,能帮助你学习基本概念 。比方说我学VB的时候,什么是类一点概念都没有 。都是学了.net之后才懂得 。三来么,学会了VB.net.学其他都很方便的 。
但是如果就是用用excel的话么,VBA就可以了 。不过说句老实话,光学VBA的话,很多东西理解起来比较难 。我是最后学VBA的,看了书一个礼拜之后就能随便编了 。但是书上很多代码的 , 我猜如果没有VB基础,估计看不懂
vb和vb.net的区别和特点1、vb.net完全符合面向对象的编程语言抽象、封装、继承的四大特性,而vb不支持继承 。
2、错误处理不同 。
vb中只是On Error.....goto和On Errer Resume Next ,这些错误称为非结构化异常处理 。而在vb.net中采用的结构化异常处理机制,try...catch....finally控制 。
3、两者产生的窗体不同 。
vb.net 允许创建不同类型的应用程序 , 例如,创建ASP.NET和ASP.NET Web 服务应用程序 , 还允许创建控制台应用程序和作为桌面服务运行的应用程序 。但是vb 只能创建Windows窗体 。
4、数据库访问的差别 。
vb6.0是通过ADO(Active X Data Objext)来实现对数据库访问 。而vb.net 是通过ADO.NET来访问数据库 。
扩展资料
Visual Basic(简称VB)是Microsoft公司开发的一种通用的基于对象的程序设计语言,为结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言 。是一种可用于微软自家产品开发的语言 。
“Visual” 指的是开发图形用户界面 (GUI) 的方法——不需编写大量代码去描述界面元素的外观和位置,而只要把预先建立的对象add到屏幕上的一点即可 。
“Basic”指的是 BASIC (Beginners All-Purpose Symbolic Instruction Code) 语言,是一种在计算技术发展历史上应用得最为广泛的语言 。
Visual Basic源自于BASIC编程语言 。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建Active X控件,用于高效生成类型安全和面向对象的应用程序。
参考资料:百度百科-Visual Basic
怎样运行VB中的.bas文件.bas是模块, 不能直接运行, 里面应该有一些全局的函数. 在工程上点右键--添加--模块, 然后选择bas文件就可以导入这个模块了
VB的软件开发环境是什么?VB为使用者提供vb.net.bas了一个功能强大而又易于操作的集成开发环境vb.net.bas,用VB开发应用程序的大部分工作都可以通过该集成开发环境来完成 。
低版本的Vb用Microsoft Visual Basic 6.0
高级版本的Vb(Vb.NET)用Microsoft Visual Studio,有2003,2005,2008还有2010版的 。
扩展资料:
VBA
Visual Basic for Applications(VBA):包含在微软的应用程序中vb.net.bas , 以及类似WordPerfect、Office这样第三方的产品里面 。
VBS
VBScript(VBS):是默认的ASP语言vb.net.bas,还可以用在Windows脚本编写和网页编码中 。尽管它的语法类似于VBvb.net.bas,但是它却是一种完全不同的语言 。
参考资料来源:百度百科-Visual Basic
【关于vb.net.bas的信息】vb.net.bas的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、vb.net.bas的信息别忘了在本站进行查找喔 。
推荐阅读
- 相机的拍摄准备阶段是什么,相机的拍摄准备阶段是什么
- vs.net来设计程序的基本步骤,visual c#net程序设计教程
- asp.net生成订单号,java订单号生成算法
- 膜品直播设备,模拟直播中的产品介绍
- python函数递归层数 python中递归函数写法
- 魅族手机s6评价怎么样,魅族s6百度百科
- 益智玩具寻宝游戏,智力游戏寻宝记
- 如何加入购物平台软件推广,购物平台推广如何赚钱
- 怎么删oracle11g 怎么删除微信好友?