VB6 эквивалент string.IsNullOrEmpty
Я работаю над устаревшим приложением, и мои навыки VB6 не так уж хороши. Мне нужно проверить, было ли инициализировано поле String и установлено значение, отличное от null/nothing или пустая строка. В С# я бы просто сделал что-то вроде:
if (string.IsNullOrEmpty(myObj.Str))
Я не уверен, что эквивалентно этому в VB6, и я нервничаю из-за использования If myObj.Str = ""
и называю это хорошим. Каков правильный способ сделать это?
Чтобы уточнить, я хочу что-то, что вернет True, если любое из следующих утверждений верно:
- Поле не было инициализировано
- Поле представляет собой пустую строку (str = "", length = 0)
- Поле установлено равным null, или Nothing или vbnull, или любая форма нулевого значения применяется к строкам VB6.
Поле изначально было длинным, а код, который я заменяю, проверял, было ли оно установлено на 0.
Ответы
Ответ 1
VB6 был разработан как easy
Используйте
If str = "" Then
' uninitialised, null or empty ""
- Строки автоматически инициализируются в [ редактировать] пустую строку.
- Нулевая строка - vbNullString.
- Но не беспокойтесь о нулевых строках. Нулевая строка VB6 неотличима от пустой строки "" для (почти) любых манипуляций с строкой.
Ответ 2
Самый оптимизированный и безопасный способ удовлетворить ваши 3 требования заключается в следующем:
If LenB(myObj.Str) = 0
Then Debug.Print "String is empty/null/not initialized"
Else Debug.Print "Not Empty"
Ответ 3
использовать Является ли Null для укусов или ничего для объектов
используйте 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
рассматривает
Ответ 4
Я пробовал, If str = ""
Затем
но это не сработало.
Лучший способ определить, является ли данная строка нулевой:
If IsNull(str)
Тогда
'Это будет отлично работать
Ответ 5
Как "Нули" и "Пустые строки" на самом деле являются разными значениями, этот подход может легко захватить для вас:
If strValue & "" = "" Then
'This is Null
Else
'This is NOT Null
End If
Ответ 6
Просто добавьте информацию в ответ MarkJ. Если вы работаете с набором записей, это
if rs.fields.item("rsField").value = "" then
Выбросит ошибку времени выполнения в случае, если элемент имеет значение null. Вы должны сделать это:
if rs.fields.item("rsField").value & "" = "" then
Удачи.
Ответ 7
'Использование VbNullstring может быть очень эффективным способом
Dim YourString as string
dim HasValue as boolean
If YourString = vbnullstring then
HasValue = False
Else
HasValue = True
End if