Option Explicit
'KiteGirl TID 1.00 - modIndexText.bas
'巨型文本文件索引器。
'(这是一个模块,需要把这些代码复制到模块里)
'TID使用示例:
'GIS2.txt文件,以&HA为分隔符,分隔符长度1。利用TID取它的任意行(这里从第3行开始,取2行)
'(这里举例为特殊文本,Windows下正常文本采用默认值分隔符就可以)
'Dim tStrings() As String
'TID_File_Create "GIS2.txt", "GIS2.tid", &HA, 1 '给GIS2.txt建立索引。如果文件内容、路径不改变,只需要建立一次TID。
'tStrings() = TID_LinkFile_GetRagByTIDFile("GIS2.tid", 3-1, 2) '根据索引文件GIS2.tid,返回链接文件的内容。
'结果:返回一个String数组。这个数组有2个元素,索引从0到1。这两个元素依次是GIS2.txt中第3行、第4行的内容。
'对用户有用的函数说明
'TID_LinkFile_GetRagByTIDFile函数
'语法: tOutStrings() = TID_LinkFile_GetRagByTIDFile(pFileName[, pRagStart][, pRagCount])
'功能: 根据TID文件,返回链接文件从指定行号开始指定数量的行。
'参数: string pFileName TID文件名
' long pRagStart 起始行号。默认为-1,从第0行开始读。
' long pRagCount 读取行数。默认为0,读取文件记录中全部的行。
'返回: string tOutStrings() 从行号开始,指定记录数量的字符串。
'说明: pFileName是TID文件,而不是你要读取的目的文件。目的文件的文件名被记录在TID文件里。
' 如果你的目的文件改变了位置,则必须重新建立TID文件,否则程序会找不到目的文件。
' pRagStart行号从0计算。例如:如果你想从100行开始读,则应指定为99。
' pRagCount行数至少为1行,小于1为非法值。如为非法值,则程序默认读取全部的行。
'示例: 读GIS2.tid文件所链接的文件。从第3行取2行。
' Debug.Print Join(TID_LinkFile_GetRagByTIDFile("GIS2.tid", 3-1, 2), vbCrLf)
'TID_File_Create过程
'语法: TID_File_Create pLinkFile, pTIDFile[, pLimit_Code][, pLimit_Len][, pBuffer_Size]
'功能: 为一个链接文件建立TID文件。
'参数: string pLinkFile 链接文件
' string pTIDFile TID文件
' byte pLimit_Code 分隔符(目前只支持一个字节)。默认为vbCrlf
' long pLimit_Len 分隔符长度。默认为2
' long pBuffer_Size 缓冲区容量。默认65536
Public Type tpTID_RagInfo '碎片信息(8Byte)
riStart As Long '碎片开始地址(0 to x)。
riLength As Long '碎片长度(0 to x)
End Type
Public Type tpTID_InfoHead '文件信息头(以vbCrlf连接为一组Byte)
ihFileType As String '文件类型
ihFileVersion As String '文件版本
ihLinkFile As String '链接文件
End Type
Public Type tpTID_FileHead '文件头
thInfoHeadRag As tpTID_RagInfo '文件信息长度
thInfoHead() As Byte '文件信息头(以vbCrlf连接的Byte数组)
thDataStart As Long '数据开始(1 to x)
thDataCount As Long '索引数量(1 to x)
End Type
Public Type tpTID_File 'TID文件
tfFileHead As tpTID_FileHead '文件头
tfFileInfo As tpTID_InfoHead '信息头
tfRagInfos() As tpTID_RagInfo '碎片表
End Type
Public Const conTID_FileType As String = "TID" 'TID标识符
Public Const conTID_FileVersion As String = "1.00" 'TID文件版本
Public Const conTID_RagInfoLen As Long = 8 'RagInfo记录长
Public Const conTID_FileHead_DataStart As Long = 8 '数据区偏移地址,为tpTID_FileHead的thDataStart、thDataLength的字节长度和。
Public Const conTID_Limit_Code_CrLf As Byte = &HD '分隔符CrLf
Public Const conTID_Limit_Code_Cr As Byte = &HD '分隔符Cr
Public Const conTID_Limit_Code_Lf As Byte = &HA '分隔符Lf
Public Const conTID_Limit_Len_CrLf As Long = 2 '分隔符长CrLf
Public Const c