VB“变态”用法之高效字串指针类
在VB中使用String类型有两个缺点:第一,它的分配是由VB运行时控制的,我们不能在指定的内存中分配;第二,对字符串的任何赋值都需要重新分配内存。为了实现高效灵活的字符串处理,我们必须克服这两个缺点。
对于第一个问题,可以通过修改字符串变量中BSTR描述符的指针来实现;对于第二个问题,可以用Mid语句(注意是语句而不是函数)赋值。我就不细说了, 直接看下面这个类:
Option Explicit
' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 作者:http://www.csdn.net/author/adambear熊超ID:Adam Bear 2002年3月18日
'您可以自由使用这种模块,但是, 请保留此声明
' * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。 * * * Private declare subcopy memory lib " kernel 32 " alias " rtlmovememory "(destination as any,source as any,byval length as long)
'不要直接给sString赋值(可以使用MID语句),而将其公开只是为了提高效率。
public s string as string ' bstr descriptor pointer
private pstra as long ' bstr address
private n maxlen as long ' bstr bytes
使此字符串指向特定地址
public subattach(addr as long,可选nlen as long)
pstr = addr
'修改bstr描述符的指针,使其指向addr
copy memory byval 4
如果缺少(nlen)则exit sub
'设置字符串中的字节数
n maxlen = nlen
end sub
'还原原始字符串BSTR。 public Sub Detach()
copy memory ByVal VarPtr(sString),0 & 4
End Sub
0条评论