Structure conditionnelle et variants [Résolu/Fermé]

vrachid 110 Messages postés lundi 6 mars 2006Date d'inscription 5 octobre 2011 Dernière intervention - 15 nov. 2009 à 14:57 - Dernière réponse : cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention
- 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.
Afficher la suite 

3 réponses

Meilleure réponse
ThWilliam 424 Messages postés mardi 3 janvier 2006Date d'inscription 26 novembre 2013 Dernière intervention - 15 nov. 2009 à 17:24
3
Merci
Salut,

puisque tu appelles ton field par son nom, n'utilise pas FieldValues qui renvoie un variant (c'est plus lent).

if DM.TCab.FieldByName('Tel2').asString <> '' then
begin
info_cab:=info_cab + '/ ' + DM.TCab.FieldByName('Tel2').asString;
end;

A +
Thierry

Merci ThWilliam 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 84 internautes ce mois-ci

Commenter la réponse de ThWilliam
Meilleure réponse
cs_Delphiprog 4580 Messages postés samedi 19 janvier 2002Date d'inscription 9 janvier 2013 Dernière intervention - 15 nov. 2009 à 18:41
3
Merci
"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; 


8000 Lévriers 'galgos' par an sont torturés et massacrés en Espagne
May Delphi be with you

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.

Merci cs_Delphiprog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 84 internautes ce mois-ci

Commenter la réponse de cs_Delphiprog
vrachid 110 Messages postés lundi 6 mars 2006Date d'inscription 5 octobre 2011 Dernière intervention - 15 nov. 2009 à 17:42
0
Merci
merci à tous ça marche très bien
Merci Therry
Commenter la réponse de vrachid

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.