Vb6.0版StringBuilder

自动换行 【由 孤帆代码着色器1.1.0.0 着色】 孤帆Blog
前几个星期简单的研究了一下.net的StringBulider类.确实是一个很好的思想,用vb6.
实现了一下她的基本功能.写了3个版本2个自己分配内存版一个现在这个东西,经过多次
的测试发现还是由vb6.0的功能来分配内存的效率还是比较高而且比较安全.
   OK!现在说说.net的StringBulider类的核心思想:当重复连接(追加)一个字符串变量
时,直接分配一个很大的内存从而减少重复分配内存所消耗的时间达到提高效率.
   在这个StringBulider类中提供了.net的StringBulider类核心方法,并加入了几个似
乎没多大的函数.以下是 StringBulider类源代码:












 m_Buffer()     
 m_lpBuffer     

 m_AllocSize    
 m_Length       

   CopyMemory     (Destination  , Source  ,  Length  )

   StrCSpn     ( lpStr&,  lpCharacters&)  
   StrCSpnI     ( lpStr&,  lpCharacters&)  

   StrRStr     ( lpStart&,  lpEnd&,  lpSrch&)  
   StrRStrI     ( lpStart&,  lpEnd&,  lpSrch&)  

 nLen   




  Capacity( Size  )
     Size <    

    Size = Size + Size 
     Size <= m_AllocSize    

    
     m_AllocSize =   m_Length =   
         m_Buffer(  Size)
    
          m_Buffer(  Size)
     
    m_lpBuffer = VarPtr(m_Buffer())        

    m_AllocSize = Size
 




  Length()  
    Length = m_Length / 
 




 Clear()
    m_Length = 
 






 Append( str  )
     IncreaseStep = 

    nLen = (str)
    nLen = nLen + nLen

    
     m_AllocSize <= m_Length + nLen 
        .Capacity = (m_Length + nLen) /  + IncreaseStep
     

    
     CopyMemory( (m_lpBuffer + m_Length),  StrPtr(str), nLen)
    m_Length = m_Length + nLen
 




  ToString()  
     m_Length >  
        ToString = (m_Buffer, m_Length / ) 
     
 






 IndexOf( str  ,   IsIgnoreCase   = )  
     m_Length <  
        IndexOf = -
         
     

     IsIgnoreCase 
        IndexOf = StrCSpnI(m_lpBuffer, StrPtr(str))
    
        IndexOf = StrCSpn(m_lpBuffer, StrPtr(str))
     

     IndexOf >=   IndexOf = IndexOf + 
 






 LastIndexOf( str  ,   IsIgnoreCase   = )  
     m_Length <  
        LastIndexOf = -
         
     

     IsIgnoreCase 
        LastIndexOf = StrRStrI(m_lpBuffer, m_lpBuffer + m_Length, StrPtr(str))
    
        LastIndexOf = StrRStr(m_lpBuffer, m_lpBuffer + m_Length, StrPtr(str))
     

     LastIndexOf >= m_lpBuffer 
        LastIndexOf = (LastIndexOf - m_lpBuffer) /  + 
    
        LastIndexOf = -
     
 

  Class_Initialize()
    m_AllocSize = 
    m_Length = 
 

  Class_Terminate()
     m_Buffer
 

 示例下载

你可能感兴趣的:(VB)