VB的字符串缓冲类,为了回答一个问题匆忙写的,HoHo

王朝vb·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

Option Explicit

Private mlngCapacity As Long '缓冲区的当前容量,可用于插入新的字符的存储空间

Private mlngLength As Long '字符个数

Private mlngEOA As Long '数组第一个空元素的索引

Private mabyt() As Byte

Private mlngUb As Long '数组上界

Private Sub Class_Initialize()

mlngCapacity = 2048

ReDim mabyt(4095)

End Sub

Private Sub Class_Terminate()

Erase mabyt

End Sub

Public Sub append(ByVal str As String)

Dim abyt() As Byte '添加的字符串转为Byte数组

Dim lngUb As Long '添加的字符串转为Byte数组的上界

Dim lngLength As Long '添加的字符串的长度

Dim i As Long

abyt = str

lngUb = UBound(abyt)

lngLength = (lngUb + 1) \ 2

Do While lngLength > mlngCapacity '插入新的字符超出缓冲区容量

mlngUb = mlngUb + 4096

ReDim mabyt(mlngUb) '缓冲区扩容

mlngCapacity = mlngCapacity + 2048

Loop

For i = 0 To lngUb

mabyt(mlngEOA + i) = abyt(i)

Next

mlngEOA = mlngEOA + lngUb + 1

mlngCapacity = mlngCapacity - lngLength

mlngLength = mlngLength + lngLength

Erase abyt

End Sub

Public Property Get length() As Long

length = mlngLength

End Property

Public Property Get capacity() As Long

capacity = mlngCapacity

End Property

Public Function toString() As String

ReDim Preserve mabyt(mlngEOA - 1)

toString = mabyt

ReDim Preserve mabyt(mlngUb)

End Function

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航