与string.IsNullOrEmpty等效的VB6

与string.IsNullOrEmpty等效的VB6,string,vb6,String,Vb6,我正在做一些遗留应用程序的工作,而我的VB6技能并没有那么好。我需要检查字符串字段是否已初始化并设置为null/nothing或空字符串以外的值。在C#中,我会做一些类似的事情: if (string.IsNullOrEmpty(myObj.Str)) 我不确定在VB6中与此等效的是什么,我担心使用If myObj.Str=“”并称之为好。正确的方法是什么 为了澄清,如果以下任何一项为真,我希望返回真值: 该字段尚未初始化 该字段为空字符串(str=“”,长度=0) 该字段被设置为null、

我正在做一些遗留应用程序的工作,而我的VB6技能并没有那么好。我需要检查字符串字段是否已初始化并设置为null/nothing或空字符串以外的值。在C#中,我会做一些类似的事情:

if (string.IsNullOrEmpty(myObj.Str))
我不确定在VB6中与此等效的是什么,我担心使用
If myObj.Str=“”
并称之为好。正确的方法是什么

为了澄清,如果以下任何一项为真,我希望返回真值:

  • 该字段尚未初始化
  • 该字段为空字符串(str=“”,长度=0)
  • 该字段被设置为null、Nothing、vbnull或适用于VB6字符串的任何形式的null值

该字段最初是一个长字段,我要替换的代码检查它是否设置为0。

对于stings使用为Null,对于对象使用为nothing

使用len(“字符串”)而不是“字符串”=”,因为它更快

Dim s As String

If Not (s Is Null) Then
  MsgBox "SET"

  if (len(s)>0) then
    MsgBox "size > 0"
  else
    MsgBox "size = 0"
  end if
Else
  MsgBox "not SET"
End If

认为满足您的3项要求的最优化和安全的方法如下:

If LenB(myObj.Str) = 0 
Then Debug.Print "String is empty/null/not initialized" 
Else Debug.Print "Not Empty"

VB6的设计目的是简单

使用

  • 字符串自动初始化为[编辑[/strong>]空字符串
  • 空字符串为vbNullString
  • 但是不要担心空字符串。对于(几乎)任何字符串操作,VB6空字符串与空字符串“”无法区分

由于“空字符串”和“空字符串”实际上是不同的值,因此此方法可以轻松捕获这两个值:

If strValue & "" = "" Then
    'This is Null
Else
    'This is NOT Null
End If
我试过,
如果str=”“
那么

但它没有起作用

确定给定字符串是否为空的最佳方法是:

如果IsNull(str)


“这将非常有效

只需在MarkJ的答案中添加信息。如果您使用的是记录集,则

if rs.fields.item("rsField").value = "" then
如果该项为空,将引发运行时错误。您应该这样做:

if rs.fields.item("rsField").value & "" = "" then

祝你好运。

'使用VbNullstring是一种非常有效的方法

Dim YourString as string  
dim HasValue as boolean

If YourString = vbnullstring then  
    HasValue = False  
Else  
HasValue = True  
End if

对于空字符串,如果LenB(s)=0,则编辑他所说的内容--他还想检查初始化的字符串是否为空或长度为0,因此还要检查s==“”是否为空,因为字符串在VB6或VB.Net中不正确。对于VB6和VB.Net,仅使用=“use Is nothing将vbNullString转换为API函数的LPCSTR参数可能是一个问题。@wqw True(但非常罕见的情况)。我将编辑说“几乎任何”不正确。字符串不会自动初始化为空。使用strprtr将为空字符串(vbNullString)返回0,strprtr(“”)将返回空字符串的地址。然而,VB6确实对它们都一视同仁,只有API调用才有可能起作用。很高兴知道这一点。谢谢。这是转换到VB.Net时的陷阱。在VB.Net中,vbNullstringString.Empty
Trim(strValue&vbNullString)=vbNullString
也将捕获已填充的空间。错误。Null和空字符串在VB6(和VB.Net)中是相同的值。这有点奇怪,Ms Access 2000-2003使用VB6,它明确地将它们视为不同的值。除非这与表格的Jet方面有关。+1测试字符串的长度确实是测试字符串零长度的最有效/最有效的方法。测试长度是测试字符串零长度的最有效方法,但它的可读性不如简单的
str=”“
。性能真正重要的频率是多少?不要这样编写代码;改为写
HasValue=YourString vbNullString
:更直接,这里完全不需要
If
。此外,没有理由在VB6中编写此代码。您可以简单地说
HasValue=YourString”“
,但是测试null不会捕获空字符串。所以你必须两者都做。
Dim YourString as string  
dim HasValue as boolean

If YourString = vbnullstring then  
    HasValue = False  
Else  
HasValue = True  
End if