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 :

Redimensionnement d'une variable Single en String


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 81
    Points : 51
    Points
    51
    Par défaut Redimensionnement d'une variable Single en String
    Bonjour à toutes et à tous,


    Je souhaiterais savoir s'il est possible de redimensionner une variable, et non un contrôle, tableau, image, form, ... Car j'ai déjà regardé et c'est pour cela que je me tourne vers vous.

    De manière plus concrète :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim a As Single
     
    a = FonctionDeRécuperationDeValeur
     
    If a = 0 then
    'redimensionner la variable "a" en chaîne de caractère
    'ReDim a As String  ??????
    'a = /
    End if
    Et il possible de redimensionner une variable dans cette esprit ?


    J'ai aussi essayé ceci, sous VB express 2010, car nous somme capable de dimensionner une variable sans déclarer de type. Mais il semble que dès qu'une valeur est rentrée dans la variable celle-ci verrouille son type en fonction de la valeur.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim a
     
    a = FonctionDeRécuperationDeValeur
     
    If a = 0 then
    'redimensionner la variable "a" en chaîne de caractère
    'ReDim a As String  ??????
    'a = /
    End if

    Cordialement,
    Bacube

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 175
    Points : 25 116
    Points
    25 116
    Par défaut
    on ne peut pas changer le type d'une variable, il suffit d'en faire une autre as string et de mettre la première dans la deuxième

    si on ne type pas une variable, le compilateur la type pour nous dès qu'il voit ce qu'on met dedans

    une autre solution est de typer as object
    après on peut mettre ce qu'on veut dedans, ca reste typé sur ce qu'on y met, par contre on perd l'intellisense, et on doit caster explicitement selon ce qu'on veut en faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dim a as object
    a = 2 ' *
    if ctype(a,single) = 0 then
      a = "texte"
    end if
    * : si on met a = 2, le compilateur va en faire un integer, si on veut typer un nombre écrit, il faut suffixer, et je ne sais pas quel est le suffixe de single
    pour un decimal ca serait a = 2D

    on peut tester le type du contenu via

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if typeof a is string then

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 81
    Points : 51
    Points
    51
    Par défaut
    Merci, c'est bien se que je pensais, mais je souhaitais avoir confirmation.


    Cordialement,
    Bacube

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Le type d'une variable est fixe, on ne peut pas changer. Si tu as besoin d'une variable String, utilises-en une autre...

    J'ai aussi essayé ceci, sous VB express 2010, car nous somme capable de dimensionner une variable sans déclarer de type. Mais il semble que dès qu'une valeur est rentrée dans la variable celle-ci verrouille son type en fonction de la valeur.
    C'est un peu plus subtil...
    - avec Option Strict On :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim x    ' Illégal, il faut préciser le type ou une valeur initiale
    Dim y = 42    ' Légal, le compilateur détermine le type d'après la valeur initiale (ici System.Int32)
    Dim z As System.Int32   ' Légal aussi bien sûr...
    - avec Option Strict Off :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim x    ' Légal, le compilateur suppose que le type est System.Object, et le "late binding" est permis
    Dim y = 42    ' Légal, le compilateur détermine le type d'après la valeur affectée (ici System.Int32)
    Dim z As System.Int32   ' Légal aussi bien sûr...
    Donc dans tous les cas, le type est déterminé une fois pour toutes lors de la compilation. Le seul cas particulier, c'est les variables de type Object avec Option Strict Off :
    - Puisque c'est un Object, tu peux y mettre une valeur de n'importe quel type (puisque tous les types héritent de Object)
    - Le "late binding" est permis, ce qui veut dire que tu peux appeler n'importe quel membre dessus. Le compilateur ne vérifie pas, c'est à l'exécution que l'existence du membre est vérifiée (ce qui implique que ça peut planter)

    Sauf cas très particulier, il faut toujours utiliser Option Strict On, qui est beaucoup plus sûr puisque ça impose un typage fort.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 81
    Points : 51
    Points
    51
    Par défaut
    Merci beaucoup pour se complément d'informations, et je suis d'accord de travailler avec un typage fort. Donc je vais essayer avec object, et sinon j'opterais pour une autre solution.

    Cordialement,
    Bacube

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. convertir une variable de type String en Number
    Par lilbrother974 dans le forum Flash
    Réponses: 13
    Dernier message: 06/09/2006, 08h28
  2. Pb pour arrondir une variable Single
    Par Celia1303 dans le forum Access
    Réponses: 2
    Dernier message: 13/10/2005, 11h39
  3. [DEBUTANT] Transformer une variable Double en STring
    Par Battosaiii dans le forum Langage
    Réponses: 6
    Dernier message: 13/06/2005, 16h43
  4. [JSTL] Récupérer une variable du style <%String bob = "bobby"%>
    Par nickoshiba dans le forum Taglibs
    Réponses: 2
    Dernier message: 15/03/2005, 08h50
  5. Ajouter a une variable de type string, un entier
    Par Little-Freud dans le forum SL & STL
    Réponses: 12
    Dernier message: 05/03/2005, 19h33

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