主题:请教Null和VbNullString的问题?
huhu0013
[专家分:160] 发布于 2008-03-31 21:42:00
请高手们帮解释解释在VB6中这些东西意思和用法:
Null,VbNullString
谢谢了。
回复列表 (共8个回复)
沙发
tanchuhan [专家分:15140] 发布于 2008-04-01 13:10:00
vbNull: 1
Null: 空对象(不能用if ** = Null Then直接判断,只能用IsNull(**))
vbNullChar: 空字符(相当于C里面的'\0')
vbNullString:空字符串(也就是一个字符串也没有,甚至没有字符串自身的描述,本质上是一个常数0)
另外,如果楼主觉得我讲的对你有帮助,评10分就行了,呵呵,9990分好看。谢谢
板凳
merry05 [专家分:8920] 发布于 2008-04-02 08:41:00
[quote]
vbNullString:空字符串(也就是一个字符串也没有,甚至没有字符串自身的描述,本质上是一个常数0)
[/quote]
这样?
使用API中的findwindowex时参数用vbnullstring找得到窗口,用0却不行-_-|||
3 楼
huhu0013 [专家分:160] 发布于 2008-04-04 14:40:00
评你10分了,
但我与merry05一样,对VB6里的这些东西依旧感觉很含糊。
4 楼
brokenworld [专家分:2640] 发布于 2008-04-04 14:49:00
vbnullstring是一个4字节的空值,传输进api中一般要这样 0&
5 楼
huhu0013 [专家分:160] 发布于 2008-04-04 14:58:00
to brokenworld:
听你这样解释,我有点懂了。
6 楼
singlion [专家分:690] 发布于 2008-04-04 22:51:00
字符串的本质问题。
字符串是由两部分组成:一个指针和一个Unicode字符数组
vbNullString就是一个只有第一部分而没有第二部分的字符串
7 楼
tanchuhan [专家分:15140] 发布于 2008-04-07 09:52:00
[quote][quote]
vbNullString:空字符串(也就是一个字符串也没有,甚至没有字符串自身的描述,本质上是一个常数0)
[/quote]
这样?
使用API中的findwindowex时参数用vbnullstring找得到窗口,用0却不行-_-|||[/quote]
ByVal lpString As String
此时你传入0的话,VB会自动把你的0变成"0",再把这个字符串指针传给API,也就是说你传入的不是空串了。所以在VB里面字符串传入空串时要特别用vbNullString这个“字符串常数”。
当然,还可以用另外一种方式来理解,把声明改为:
ByVal lpString As Long
再传入0就OK了
另外,我觉得很多人传0时这样写0&,没必要,因为0进行有符号扩展后还是0,编译器还没笨到这个程度:因为你少写一个&而需要插入多余的其它代码
试试下面的实例:
Option Explicit
Private Declare Function [color=0000FF]FindWindow[/color] Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName [color=0000FF]As String[/color]) As Long
Private Declare Function [color=FF00FF]FindWindow_Long[/color] Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName [color=FF00FF]As Long[/color]) As Long
Private Sub Form_Load()
Dim hwnd1 As Long, hwnd2 As Long
hwnd1 = [color=0000FF]FindWindow[/color]("Notepad", [color=0000FF]vbNullString[/color])
hwnd2 = [color=FF00FF]FindWindow_Long[/color]("Notepad", [color=FF00FF]0[/color])
Debug.Print hwnd1, hwnd2
Stop
End
End Sub
8 楼
merry05 [专家分:8920] 发布于 2008-04-07 13:03:00
LS,高!~
我来回复