web-dev-qa-db-ja.com

string.IsNullOrEmptyに相当するVB6

私はレガシアプリケーションでいくつかの作業を行っていますが、VB6のスキルはそれほど優れていません。 Stringフィールドが初期化され、null/nothingまたは空の文字列以外に設定されているかどうかを確認する必要があります。 C#では、次のようなことをするだけです。

if (string.IsNullOrEmpty(myObj.Str))

これに相当するものがVB6にあったかどうかはわかりません。If myObj.Str = ""といいですね。これを行う正しい方法は何ですか?

明確にするために、次のいずれかに該当する場合にTrueを返すものが必要です。

  • フィールドは初期化されていません
  • フィールドは空の文字列です(str = ""、length = 0)
  • フィールドは、null、Nothing、またはvbnull、またはVB6文字列に適用されるnull値の形式に設定されます。

このフィールドは元々Longであり、置換するコードは0に設定されているかどうかを確認しました。

26
Justin Morgan

VB6はeasyになるように設計されました

つかいます

If str = "" Then 
  ' uninitialised, null or empty ""
  • 文字列は自動的に[edit] null文字列に初期化されます。
  • Null文字列はvbNullStringです。
  • ただし、null文字列については心配しないでください。 VB6 null文字列は、(ほとんど)文字列操作のために空の文字列 ""と区別できません。
41
MarkJ

3つの要件を満たす最も最適化された安全な方法は次のとおりです。

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

刺し傷にはNullであるを、オブジェクトにはis nothingを使用する

より高速であるため、「string」= "」の代わりにlen("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

よろしく

3
Thomas

試しました、_If str = ""_その後

しかし、うまくいきませんでした。

指定された文字列がnullであるかどうかを識別する最適な方法は次のとおりです。

If IsNull(str) Then

'これは完全に機能します

2

MarkJの回答に情報を追加するだけです。レコードセットを使用している場合、これ

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

アイテムがnullの場合、ランタイムエラーをスローします。これを行う必要があります:

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

がんばろう。

0
Gonzalo

「Nulls」と「Empty Strings」は実際には異なる値であるため、このアプローチでは両方を簡単に取得できます。

If strValue & "" = "" Then
    'This is Null
Else
    'This is NOT Null
End If
0
Matt Donnan

'VbNullstringの使用は非常に効果的な方法です

Dim YourString as string  
dim HasValue as boolean

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