巨文本索引器——TID 1.0

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值