web-dev-qa-db-fra.com

Équivalent VB6 de string.IsNullOrEmpty

Je travaille sur une application héritée et mes compétences en VB6 ne sont pas très bonnes. Je dois vérifier si un champ Chaîne a été initialisé et défini sur autre chose que null/rien ou une chaîne vide. En C #, je ferais juste quelque chose comme:

if (string.IsNullOrEmpty(myObj.Str))

Je ne suis pas sûr de savoir ce que cela équivaut à VB6, et je suis inquiet à l'idée d'utiliser If myObj.Str = "" et de dire que c'est bien. Quelle est la bonne façon de faire cela? 

Pour clarifier, je veux quelque chose qui retournera True si l'une des conditions suivantes est vraie:

  • Le champ n'a pas été initialisé
  • Le champ est une chaîne vide (str = "", length = 0)
  • Le champ est défini sur null, ou sur Nothing ou sur vbnull. Quelle que soit la forme de la valeur null, elle s'applique aux chaînes VB6.

À l'origine, le champ était long et le code que je remplaçais vérifiait s'il était réglé à 0.

26
Justin Morgan

VB6 a été conçu pour être facile

Utilisation 

If str = "" Then 
  ' uninitialised, null or empty ""
  • Les chaînes sont automatiquement initialisées avec [ edit ] une chaîne nulle. 
  • La chaîne null est vbNullString. 
  • Mais ne vous inquiétez pas des chaînes vides. Une chaîne vide VB6 ne se distingue pas d’une chaîne vide "" pour (presque) toutes les manipulations de chaîne.
40
MarkJ

La manière la plus optimisée et la plus sûre de répondre à vos 3 exigences est la suivante:

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

use Is Null pour les piqûres ou n'est rien pour les objets

utilisez len ("string") au lieu de "string" = "" car c'est plus rapide 

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

cordialement

3
Thomas

J'ai essayé, If str = "" Ensuite

mais cela n'a pas fonctionné.

Le meilleur moyen d'identifier si la chaîne donnée est null est:

If IsNull(str) Alors

'Cela fonctionnera parfaitement

2

Il suffit d'ajouter des informations à la réponse de MarkJ. Si vous travaillez avec un jeu d’enregistrements, cela

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

Lance une erreur d'exécution au cas où cet élément est null. Vous devriez faire ceci:

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

Bonne chance.

0
Gonzalo

Comme les 'Nulls' et 'Empty Strings' sont en réalité des valeurs différentes, cette approche peut capturer facilement les deux:

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

'Utiliser VbNullstring peut être un moyen très efficace 

Dim YourString as string  
dim HasValue as boolean

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