IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Conversion de Type


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Par défaut Conversion de Type
    Bonjour,

    Comment faire, pour savoir si une variable peut être convertie vers le type d'une autre variable ?



    merci d'avance

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bonjour

    Citation Envoyé par justgreat Voir le message
    ,
    Comment faire, pour savoir si une variable peut être convertie vers le type d'une autre variable ?
    La question est un peu trop vague car cela dépend de la manière dont est envisagée la conversion.

    Si c'est pour tester la possibilité de faire un cast, la méthode IsAssignableFrom de la classe Type peut être employée avec profit.

    Si c'est pour des conversion de types numériques, les méthodes statiques CheckIfDoubleIsInteger, CheckIfSingleIsInteger de la classe Convert peuvent être utiles.

    etc, etc .....

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    Soit le faire avec un Ctype() et récupérer l'exception.

    Soit le faire avec un TryCast() qui renvoie nothing si ça passe pas.

    Néanmoins l'utilisation d'une exception est à proscrire s'il s'agit de tester la valeur (c'est à dire qu'il est normal, voir fortement probable que l'opération échoue) car la gestion des exceptions est "couteuse" en temps (et peux rendre le debuggage très chiant aussi).

    Je ne crois pas qu'un CheckIfxxx négatif rend la conversion impossible mais permet de vérifier s'il n'y a pas une perte de précision (je suis vraiement pas sur de ce point)

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par sinople Voir le message
    Je ne crois pas qu'un CheckIfxxx négatif rend la conversion impossible mais permet de vérifier s'il n'y a pas une perte de précision (je suis vraiement pas sur de ce point)
    Si, si. tu as parfaitement raison, mais en l'absence de précisions, je me contentais d'explorer des généralités.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 261
    Par défaut
    Pour etre plus claire, voici un example de ce que j'essaye de faire, je passe deux variables Var1 et Var2, peu importe leur type (string, int, booleen etc..)
    je teste si var1, peut être converti en type du var 2 ou pas !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub Check_Variable_Types(Var1 As Object, Var2 As Object)
     
     Try
     
    Dim MyType as Type
    Dim Resultat as object
     
    MyType = GetType(Var2)
    Resultat=CType(Var1, MyType)  'ça ne marche pas, il dit que MyType est non défini
     
    Msgbox "Succès"
     
    Catch ex As Exception
                MsgBox("Impossible de convertir")
    End Try
     
     
    end sub

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    L'opérateur CType attend non pas une instance de Type à l'exécution, mas un type pleinement qualifié à la compilation.
    et je rejoint bluedeep...

    si tu veux savoir si c'est possible, il faut utiliser la reflexion en premier lieu et regarder si les variables sont équivalentes...

    classes => classes,

    struct => structs

    type intégraux => types intégraux,

    ou que des opérateurs Narrowing ou Widening soient définis, dans ce cas, les IsAssignableFrom de Type fera lui même le nécessaire pour le savoir.

    De même certaines conversions ne sont pas possibles par un simples cast et nécessite des convertions, comme par exemple transformer un tableau de byte en chaine de caractères en base 64 par la classe Convert...

Discussions similaires

  1. [DATE][CONVERSION] du type numerique au type date
    Par hamed dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 06/04/2005, 16h16
  2. Conversion de type
    Par sovitec dans le forum Langage
    Réponses: 5
    Dernier message: 15/12/2004, 14h29
  3. Conversion de type
    Par poirier dans le forum ASP
    Réponses: 2
    Dernier message: 06/07/2004, 10h30
  4. [MYSQL] conversion de type sur import de script
    Par sebos63 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 27/08/2003, 10h00
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo