VB“变态”用法之高效字串指针类

VB“变态”用法之高效字串指针类,第1张

VB“变态”用法之高效字串指针类,第2张

在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

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » VB“变态”用法之高效字串指针类

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情