vrachid
Messages postés109Date d'inscriptionlundi 6 mars 2006StatutMembreDernière intervention 5 octobre 2011
-
15 nov. 2009 à 14:57
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
15 nov. 2009 à 18:41
Bonjour à tous,
pouvez vous m'aider svp à comprendre pourquoi ce code ne fonctionne pas ?
j'ai une variable de type string à la quelle je veux ajouter du texte mais sur une condition, genre si query1.fieldvalues[]<>'' alors....
if DM.TCab.FieldValues['Tel2'] <> '' then begin info_cab:=info_cab + '/ ' + DM.TCab.FieldValues['Tel2'];
end;
à l'execution je reçois ce message d'erreur:
impossible de convertir un variant de type "Null" en string.
je ne comprend pas pourquoi il essaye de convertir alors que j'ai mis une condition.
merci d'avance.
A voir également:
Could not convert variant of type (null) into type (string)
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 15 nov. 2009 à 18:41
"null" est différent d'une chaine vide, tout simplement.
En revanche, si tu utilisais des chaînes au lieu de variants (trop coûteux en temps d'exécution), cela pourrait donner :
if DM.TCab.FieldByName['Tel2'].AsString <> '' then
begin
info_cab:= info_cab + '/ ' + DM.TCab.FieldByName['Tel2'].AsString;
end;
Extrait de l'aide en ligne :
" Remarque : Comme FieldValues utilise toujours des Variants,c'est une méthode parfois plus lente pour accéder aux données que l'utilisation du format natif du champ (par exemple une propriétéAsXXX du champ),en particulier dans les applications qui traitent de gros volumes de données. "
Mais, si tu tiens absolument à utiliser des variants, tu dois vérifier que ce variant n'est pas null grâce à la fonction varIsNull et tu peux alors écrire :
if not VarIsNull(DM.TCab.FieldValues['Tel2']) then
begin
info_cab: =info_cab + '/ ' + DM.TCab.FieldValues['Tel2'];
end;