VB6 эквивалент строки. IsNullOrEmpty - PullRequest
26 голосов
/ 06 января 2012

Я работаю над унаследованным приложением, и мои навыки в VB6 не так уж велики.Мне нужно проверить, было ли инициализировано поле String и установлено что-то отличное от нуля / ничего или пустой строки.В C # я бы просто сделал что-то вроде:

if (string.IsNullOrEmpty(myObj.Str))

Я не уверен, что эквивалент этого был в VB6, и я нервничаю по поводу использования If myObj.Str = "" и называю это хорошим.Какой правильный способ сделать это?

Чтобы уточнить, я хочу что-то, что вернет True, если выполнено любое из следующих условий:

  • Поле не было инициализировано
  • Поле являетсяпустая строка (str = "", length = 0)
  • Поле имеет значение null, или Nothing, или vbnull, или любая другая форма значения NULL, применимая к строкам VB6.

Первоначально поле было длинным, и заменяемый код проверял, установлено ли оно в 0.

Ответы [ 7 ]

41 голосов
/ 07 января 2012

VB6 был разработан, чтобы быть легким

Использование

If str = "" Then 
  ' uninitialised, null or empty ""
  • Строки автоматически инициализируются как [ edit ] пустая строка.
  • Нулевой строкой является vbNullString.
  • Но не беспокойтесь о нулевых строках. Пустая строка VB6 неотличима от пустой строки "" для (почти) любой строковой манипуляции.
11 голосов
/ 07 января 2012

Наиболее оптимизированный и безопасный способ удовлетворить ваши 3 требования:

If LenB(myObj.Str) = 0 
Then Debug.Print "String is empty/null/not initialized" 
Else Debug.Print "Not Empty"
3 голосов
/ 06 января 2012

использовать Ноль для укусов или ничто для объектов

используйте len (" string ") вместо " string " = "", потому что это быстрее

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

привет

2 голосов
/ 04 ноября 2014

Я пытался, If str = "" Затем

, но это не сработало.

Лучший способ определить, является ли данная строка нулевым:

If IsNull(str)Тогда

'Это будет отлично работать

0 голосов
/ 08 августа 2016

'Использование VbNullstring может быть очень эффективным способом

Dim YourString as string  
dim HasValue as boolean

If YourString = vbnullstring then  
    HasValue = False  
Else  
HasValue = True  
End if
0 голосов
/ 25 февраля 2016

Просто добавив информацию к ответу MarkJ. Если вы работаете с набором записей, это

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

Будет выдавать ошибку времени выполнения, если этот элемент равен нулю. Вы должны сделать это:

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

Удачи.

0 голосов
/ 07 января 2012

Поскольку 'Null' и 'Empty Strings' на самом деле разные значения, этот подход может легко захватить оба:

If strValue & "" = "" Then
    'This is Null
Else
    'This is NOT Null
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...