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 :

Comment stocker les valeurs de variables


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Amateur vb.net
    Inscrit en
    Avril 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Amateur vb.net
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 99
    Par défaut Comment stocker les valeurs de variables
    Bonjour. Il y a deux choses que j'aimerais savoir.
    1] J'aimerai pouvoir créer un moyen de stocker des informations (valeur de variables) pour m'éviter de retaper le code à chaque fois. J'ai essayé dans une fonction mais je ne sais pas comment récupérer des informations dans une fonction et non donner les informations à la fonction. Voici mon code, vous allez comprendre par vous même:

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Public Function stats(ByRef att As Integer, ByRef def As Integer, ByRef pv As Integer)
            'Définition de la vie actuelle.
            Dim reader As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\stats\pv.txt")
            Dim vie = reader.ReadLine
            pv = vie
            reader.Close()
            'Définition des points d'attaque
            Dim effetattaquetete As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\attaquetete.txt")
            Dim effetattaquet = effetattaquetete.ReadToEnd
            effetattaquetete.Close()
            Dim effetattaquecape As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\attaquecape.txt")
            Dim effetcape = effetattaquecape.ReadToEnd
            effetattaquecape.Close()
            Dim effetattaquecuirasse As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\attaquecuirasse.txt")
            Dim effetattaquec = effetattaquecuirasse.ReadToEnd
            effetattaquecuirasse.Close()
            Dim effetattaquearme As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\attaquearme.txt")
            Dim effetattaquea = effetattaquearme.ReadToEnd
            effetattaquearme.Close()
            Dim dommage As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\stats\attaque.txt")
            Dim attaque = dommage.ReadToEnd
            att = CDbl(attaque) + CDbl(effetattaquet) + CDbl(effetcape) + CDbl(effetattaquec) + CDbl(effetattaquea)
            dommage.Close()
            'Définition des points de défense.
            Dim effetdefensetete As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\defensetete.txt")
            Dim effetdefenset = effetdefensetete.ReadToEnd
            effetdefensetete.Close()
            Dim effetdefensecape As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\defensecape.txt")
            Dim effetdcape = effetdefensecape.ReadToEnd
            effetdefensecape.Close()
            Dim effetdefensecuirasse As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\defensecuirasse.txt")
            Dim effetdefensec = effetdefensecuirasse.ReadToEnd
            effetdefensecuirasse.Close()
            Dim effetdefensearme As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\defensearme.txt")
            Dim effetdefensea = effetdefensearme.ReadToEnd
            effetdefensearme.Close()
            Dim defense As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\stats\defense.txt")
            Dim pd = defense.ReadToEnd
            def = CDbl(pd) + CDbl(effetdefenset) + CDbl(effetdcape) + CDbl(effetdefensec) + CDbl(effetdefensea)
            defense.Close()
    Comme vous pouvez le voir, je définis dans la fonction la valeur de :
    -att
    -def
    -pv
    Mais comment récupérer leur valeur et non la donner lorsqu'on fait appelle à la fonction?



    2] Sinon, est-il possible de stocker cette fonction (et d'autres) dans une application extérieur et ainsi faire en sorte qu'on puisse faire appelle à cette "bibliothèque de fonction" depuis une autre application?


    Merci d'avance.
    Cordialement.

  2. #2
    Membre éclairé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Par défaut
    Salut moi je ferais comme ca
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Public Function stats()
    dim rep as string
          dim att  as integer
    dim def as integer
    dim pv as integer
      'Définition de la vie actuelle.
            Dim reader As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\stats\pv.txt")
            Dim vie = reader.ReadLine
            pv = vie
            reader.Close()
            'Définition des points d'attaque
            Dim effetattaquetete As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\attaquetete.txt")
            Dim effetattaquet = effetattaquetete.ReadToEnd
            effetattaquetete.Close()
            Dim effetattaquecape As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\attaquecape.txt")
            Dim effetcape = effetattaquecape.ReadToEnd
            effetattaquecape.Close()
            Dim effetattaquecuirasse As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\attaquecuirasse.txt")
            Dim effetattaquec = effetattaquecuirasse.ReadToEnd
            effetattaquecuirasse.Close()
            Dim effetattaquearme As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\attaquearme.txt")
            Dim effetattaquea = effetattaquearme.ReadToEnd
            effetattaquearme.Close()
            Dim dommage As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\stats\attaque.txt")
            Dim attaque = dommage.ReadToEnd
            att = CDbl(attaque) + CDbl(effetattaquet) + CDbl(effetcape) + CDbl(effetattaquec) + CDbl(effetattaquea)
            dommage.Close()
            'Définition des points de défense.
            Dim effetdefensetete As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\defensetete.txt")
            Dim effetdefenset = effetdefensetete.ReadToEnd
            effetdefensetete.Close()
            Dim effetdefensecape As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\defensecape.txt")
            Dim effetdcape = effetdefensecape.ReadToEnd
            effetdefensecape.Close()
            Dim effetdefensecuirasse As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\defensecuirasse.txt")
            Dim effetdefensec = effetdefensecuirasse.ReadToEnd
            effetdefensecuirasse.Close()
            Dim effetdefensearme As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\defensearme.txt")
            Dim effetdefensea = effetdefensearme.ReadToEnd
            effetdefensearme.Close()
            Dim defense As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\stats\defense.txt")
            Dim pd = defense.ReadToEnd
            def = CDbl(pd) + CDbl(effetdefenset) + CDbl(effetdcape) + CDbl(effetdefensec) + CDbl(effetdefensea)
            defense.Close()
    rep = att & ";" & def & ";" pv
     
    return rep
    end fonction
     
    Dim mes_stats as string
    dim attaque as integer
    dim poivie as integer
    dim defense as integer
    mes_stats = stats
    attaque = cint(split(mes_stats,";")(0))
    poivie = cint(split(mes_stats,";")(2))
    defense = cint(split(mes_stats,";")(1))

  3. #3
    Membre confirmé
    Homme Profil pro
    Amateur vb.net
    Inscrit en
    Avril 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Amateur vb.net
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 99
    Par défaut
    Merci beaucoup mais à quoi sert la dernière partie de ton code?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    attaque = cint(split(mes_stats,";")(0))
    poivie = cint(split(mes_stats,";")(2))
    defense = cint(split(mes_stats,";")(1))

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Les paramètres étant en "ByRef" les modifications apportées dans le code de la fonction seront transmises vers le code principal.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            Dim Attaque As Integer
            Dim Defense As Integer
            Dim PointVie As Integer
            stats(Attaque, Defense, PointVie) 
            MsgBox(Attaque)
            MsgBox(Defense)
            MsgBox(PointVie)
    Par contre il est préférable de typer les functions (sinon utiliser une sub)
    par exemple pour savoir s'il y a eu une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Public Function stats(ByRef att As Integer, ByRef def As Integer, ByRef pv As Integer) As Integer
            Try
                'ton code
                ' ...
                Return 0
            Catch ex As Exception
                Return 1
            End Try
        End Function
    tu peux ensuite l'utiliser ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            Dim Attaque As Integer
            Dim Defense As Integer
            Dim PointVie As Integer
            If stats(Attaque, Defense, PointVie) = 0 Then
                MsgBox(Attaque)
                MsgBox(Defense)
                MsgBox(PointVie)
            Else
                ' gérer erreur
            End If
    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  5. #5
    Membre confirmé
    Homme Profil pro
    Amateur vb.net
    Inscrit en
    Avril 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Amateur vb.net
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2012
    Messages : 99
    Par défaut
    Mais comment l'application va connaître la valeur des variables contenues dans la fonction?
    Sinon pour ma deuxième question, auriez-vous une solution?

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Dans mon exemple la variable attaque contiendra la valeur de att
    la variable defense contiendra la valeur de def
    et la variable PointVie contiendra la valeur de pv

    attaque et att sont en réalité la même zone en mémoire. (parceque tu as définie att en ByRef)
    idem pour les autres.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  7. #7
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Salut

    d'abord met ton projet à option explicit on et option strict on

    Pourquoi ne pas déclarer att def pv comme attribut dans ta class
    au lieu de parametre dans ta fonction

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    class form1
       private att as double
       private def as  double
       private pv as double
    'plutot une sub 
    Public sub  stats() 
    Dim reader As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\stats\pv.txt")
        Dim vie = reader.ReadLine
            pv = convert.todouble(vie)
        reader.Close()
            'Définition des points d'attaque
            reader = New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\attaquetete.txt")
            Dim effetattaquet = reader.ReadToEnd
            reader.Close()
           reader = new System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\attaquecape.txt")
            Dim effetcape = reader.ReadToEnd
            reader.Close()
           reader =  New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\attaquecuirasse.txt")
            Dim effetattaquec = reader.ReadToEnd
           reader.Close()
           reader =  New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\attaquearme.txt")
            Dim effetattaquea = reader.ReadToEnd
            reader.Close()
            reader = New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\stats\attaque.txt")
            Dim attaque = reader.ReadToEnd
            att = Convert.ToDouble(attaque) + Convert.ToDouble(effetattaquet) + Convert.ToDouble(effetcape) + Convert.ToDouble(effetattaquec) + Convert.ToDouble(effetattaquea)       
     reader.Close()
            'Définition des points de défense.
            Dim reader As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\defensetete.txt")
            Dim effetdefenset = reader.ReadToEnd
           reader.Close()
            reader =   New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\defensecape.txt")
            Dim effetdcape = reader.ReadToEnd
            reader.Close()
             reader = New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\defensecuirasse.txt")
            Dim effetdefensec =   reader = .ReadToEnd
            reader = .Close()
              reader = New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\effet\defensearme.txt")
            Dim effetdefensea =   reader = .ReadToEnd
             reader = .Close()
             reader =  New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\stats\defense.txt")
            Dim pd =   reader = .ReadToEnd
               def = Convert.ToDouble(pd) + Convert.ToDouble(effetdefenset) + Convert.ToDouble(effetdcape) + Convert.ToDouble(effetdefensec) + Convert.ToDouble(effetdefensea)
     
             reader = .Close() 
     
    end sub

  8. #8
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Salut,
    Mais comment récupérer leur valeur et non la donner lorsqu'on fait appelle à la fonction?
    Sinon tu peux créer une classe Stats et en faire le type de retour de ta fonction. Petit exemple:

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Class Stats
        Property Attaque As Integer
        Property Defense As Integer
        Property PointVie As Integer
    End Class
     
    Sub Main()
     
        Dim stats As Stats = LoadStats()
        MsgBox(stats.Attaque)
        MsgBox(stats.Defense)
        MsgBox(stats.PointVie)
     
    End Sub
     
    Private Function LoadStats() As Stats
        Dim stats As New Stats    '<--- au début on crée de nouveaux stats
     
        'Définition de la vie actuelle.
        Dim reader As New System.IO.StreamReader(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Zune\stats\pv.txt")
        Dim vie = reader.ReadLine
        stats.PointVie = Integer.Parse(vie)    '<--- on rempli les stats au fur et à mesure
        reader.Close()
        'Définition des points d'attaque
        'etc.
     
     
        Return stats    '<--- on renvoie les stats
    End Function
    Sinon, est-il possible de stocker cette fonction (et d'autres) dans une application extérieur et ainsi faire en sorte qu'on puisse faire appelle à cette "bibliothèque de fonction" depuis une autre application?
    Tu peux créer un nouveau projet de type "Bibliothèque de classes", ce qui générera une DLL que tu pourra importer dans n'importe quelle de tes applications. Ainsi les classes, modules et les fonctions présentes seront accessibles.

Discussions similaires

  1. [MySQL] Comment stocker les résultats d'un enregistrement dans des variables?
    Par Alexandrebox dans le forum PHP & Base de données
    Réponses: 26
    Dernier message: 30/07/2010, 21h23
  2. [AC-2003] Comment stocker les valeurs d'un champ d'un recordset
    Par megdi dans le forum VBA Access
    Réponses: 1
    Dernier message: 07/09/2009, 13h29
  3. Réponses: 3
    Dernier message: 13/03/2009, 15h20
  4. Réponses: 21
    Dernier message: 18/11/2008, 14h36
  5. Comment insérer les valeurs d'une requete dans une variable tableau
    Par uptoditime dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/12/2007, 12h03

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