Partage
  • Partager sur Facebook
  • Partager sur Twitter

variable public dans mon premier programme

    21 mars 2012 à 14:52:57

    Je ne trouve pas de moyen de créer une variable public en vb .net.
    Du coup je dois refaire une détection 32 bits ou 64 bits dans mes 2 sub.
    private et public semble ne plus marcher comme je peux le lire, commandes vb6 uniquement ?

    Les variables que je définis dans if/else sont considéré comme "non définit" si je les appelle à la suite. Je dois donc les définir 2 fois une fois dans le if et une fois dans le else.

    Je débute tout juste c'est mon tout premier programme, il semble bien marcher mais le code est loin d'être propre :
    si quelqu'un peut me proposer des idées de modification pour le rendre plus logique.

    Public Class Form1

    Public Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

    If Environment.Is64BitOperatingSystem = True Then
    Me.TXT_BITS.Text = "Windows 64 bits détecté"
    Me.TXT_BITS.TextAlign = HorizontalAlignment.Center

    Else
    Me.TXT_BITS.Text = "Windows 32 bits détecté"
    Me.TXT_BITS.TextAlign = HorizontalAlignment.Center

    End If

    End Sub


    Public Sub BT_INSTALL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_INSTALL.Click

    Dim dvd0serv As New ProcessStartInfo
    Dim dvd0auto As New ProcessStartInfo
    Dim dvd0clie As New ProcessStartInfo

    Dim unzip1, unzip2, unzip3, unzip4, unzip5 As New ProcessStartInfo

    Dim media1 As String = ".\media1.7z"
    Dim media2 As String = ".\media2.7z"
    Dim media3 As String = ".\media3.7z"
    Dim media4 As String = ".\media4.7z"
    Dim media5 As String = ".\media5.7z"

    unzip1.WindowStyle = unzip2.WindowStyle = unzip3.WindowStyle = unzip4.WindowStyle = unzip5.WindowStyle = ProcessWindowStyle.Hidden


    If Environment.Is64BitOperatingSystem = True Then
    ' Variable opsystem comme Operating System 64 pour 64 bits
    Dim opsystem As String = 64
    ' Définit la variable ProgramFiles en récupérant la variable d'environnement ProgramFiles(x86)
    Dim ProgramFiles As String = Environment.GetEnvironmentVariable("ProgramFiles(x86)")


    ' Définit le dvd0 concerné par le processStart
    dvd0serv.FileName = ".\dvd0ps64.exe"
    dvd0auto.FileName = ".\dvd0pa64.exe"
    dvd0clie.FileName = ".\dvd0pc64.exe"

    ' Définit la variable destination sur le chemin de decompression de dial
    Dim destination As String = ProgramFiles & "\dial\"

    'définit le chemin de proccess unzip concerné
    unzip1.FileName = ".\7zip\64\7za.exe"
    unzip2.FileName = ".\7zip\64\7za.exe"
    unzip3.FileName = ".\7zip\64\7za.exe"
    unzip4.FileName = ".\7zip\64\7za.exe"
    unzip5.FileName = ".\7zip\64\7za.exe"

    'définit les arguments de proccess unzip concerné
    unzip1.Arguments = "x -aoa " & media1 & " " & "-o" & destination
    unzip2.Arguments = "x -aoa " & media2 & " " & "-o" & destination
    unzip3.Arguments = "x -aoa " & media3 & " " & "-o" & destination
    unzip4.Arguments = "x -aoa " & media4 & " " & "-o" & destination
    unzip5.Arguments = "x -aoa " & media5 & " " & "-o" & destination


    Else
    ' Variable opsystem comme Operating System 32 pour 32 bits
    Dim opsystem As String = 32

    ' Définit la variable ProgramFiles en récupérant la variable d'environnement ProgramFiles
    Dim ProgramFiles As String = Environment.GetEnvironmentVariable("ProgramFiles")

    ' Définit le dvd0 concerné par le processStart
    dvd0serv.FileName = ".\dvd0ps32.exe"
    dvd0auto.FileName = ".\dvd0pa32.exe"
    dvd0clie.FileName = ".\dvd0pc32.exe"

    ' Définit la variable destination sur le chemin de decompression de dial
    Dim destination As String = Chr(34) & ProgramFiles & "\dial\" & Chr(34)

    'définit le chemin de proccess unzip concerné
    unzip1.FileName = ".\7zip\32\7za.exe"
    unzip2.FileName = ".\7zip\32\7za.exe"
    unzip3.FileName = ".\7zip\32\7za.exe"
    unzip4.FileName = ".\7zip\32\7za.exe"
    unzip5.FileName = ".\7zip\32\7za.exe"

    'définit les arguments de proccess unzip concerné
    unzip1.Arguments = "x -aoa " & media1 & " " & "-o" & destination
    unzip2.Arguments = "x -aoa " & media2 & " " & "-o" & destination
    unzip3.Arguments = "x -aoa " & media3 & " " & "-o" & destination
    unzip4.Arguments = "x -aoa " & media4 & " " & "-o" & destination
    unzip5.Arguments = "x -aoa " & media5 & " " & "-o" & destination

    End If




    If Me.RB_1.Checked Then
    Process.Start(dvd0serv).WaitForExit()
    Process.Start(unzip1).WaitForExit()
    Process.Start(unzip2).WaitForExit()
    Process.Start(unzip3).WaitForExit()
    Process.Start(unzip4).WaitForExit()
    Process.Start(unzip5).WaitForExit()
    MsgBox("L'installation de " & RB_1.Text & " est terminée")
    End If
    If Me.RB_2.Checked Then
    Process.Start(dvd0serv).WaitForExit()
    Process.Start(unzip1).WaitForExit()
    MsgBox("L'installation de " & RB_2.Text & " est terminée")
    End If
    If Me.RB_3.Checked Then
    Process.Start(dvd0auto).WaitForExit()
    Process.Start(unzip1).WaitForExit()
    Process.Start(unzip2).WaitForExit()
    Process.Start(unzip3).WaitForExit()
    Process.Start(unzip4).WaitForExit()
    Process.Start(unzip5).WaitForExit()
    MsgBox("L'installation de " & RB_3.Text & " est terminée")
    End If
    If Me.RB_4.Checked Then
    Process.Start(dvd0auto).WaitForExit()
    Process.Start(unzip1).WaitForExit()
    MsgBox("L'installation de " & RB_4.Text & " est terminée")
    End If
    If Me.RB_5.Checked Then
    Process.Start(dvd0clie).WaitForExit()
    MsgBox("L'installation de " & RB_5.Text & " est terminée")
    End If
    End Sub


    End Class


    • Partager sur Facebook
    • Partager sur Twitter
      21 mars 2012 à 15:10:05

      Citation : philos1980

      Je ne trouve pas de moyen de créer une variable public en vb .net.
      (...)
      private et public semble ne plus marcher comme je peux le lire, commandes vb6 uniquement ?

      Les variables que je définis dans if/else sont considéré comme "non définit" si je les appelle à la suite. Je dois donc les définir 2 fois une fois dans le if et une fois dans le else.


      En VB.NET les variables ont une portée bien précise en fonction de l'endroit où elles sont déclarées. Une variable déclarée dans un bloc If ne sera accessible que dans ce bloc - pareil pour les méthodes et les blocs While, For, etc. Les variables qui doivent pouvoir être accessibles dans plusieurs méthodes d'une même classe sont à déclarer en tant que variables membres de cette classe, en dehors de toute méthode. Seules ces variables membres peuvent être public, private ou protected, puisque seules celles-ci pourront être éventuellement accessibles depuis d'autres classes.
      • Partager sur Facebook
      • Partager sur Twitter
        21 mars 2012 à 15:17:26

        Merci pour la réponse rapide mais je vois pas trop comment faire dans mon cas à cause de la détection 32/64 bits via if/else.

        "Les variables qui doivent pouvoir être accessibles dans plusieurs méthodes d'une même classe sont à déclarer en tant que variables membres de cette classe, en dehors de toute méthode"

        --> Je vais essayer de trouver un exemple
        • Partager sur Facebook
        • Partager sur Twitter
          21 mars 2012 à 15:44:22

          C'est assez simple ici :

          Public Class Form1
          
              Private Dim opsystem As String 'variable membre privée
          
              Public Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
          
                  If Environment.Is64BitOperatingSystem = True Then
                      opsystem = 64
                      Me.TXT_BITS.Text = "Windows 64 bits détecté"
                      Me.TXT_BITS.TextAlign = HorizontalAlignment.Center
                  Else
                      opsystem = 32
                      Me.TXT_BITS.Text = "Windows 32 bits détecté"
                      Me.TXT_BITS.TextAlign = HorizontalAlignment.Center
                  End If
          
              End Sub
          
              ' la variable membre opsystem ayant été initialisée au moment du Load,
              ' elle peut être utilisée directement dans les autres méthodes.
              '...
          
          End Class
          


          Plusieurs remarques par rapport à ceci :
          • Le choix d'une variable de type string pour indiquer le type d'OS (32 ou 64 bits) n'est pas vraiment judicieux : un simple booléen aurait fait l'affaire.
          • Mais dans ce cas, cette variable membre est redondante avec la "variable globale" Environment.Is64BitOperatingSystem (qui est en réalité une propriété publique et statique de la classe Environment). Rien n'empêche d'utiliser cette propriété statique "standard" directement dans le code, ou éventuellement de l'encapsuler dans une nouvelle propriété au lieu de devoir initialiser une variable.
          • Si l'initialisation de la variable opsystem doit être effectuée avant l'événement Load, elle peut être faite dans le constructeur de la classe.

          • Partager sur Facebook
          • Partager sur Twitter
            22 mars 2012 à 20:54:40

            Le message qui suit est une réponse automatique.
            Les réponses automatiques nous permettent d'éviter de répéter de nombreuses fois la même chose, et donc de gagner beaucoup de temps.
            Nous sommes néanmoins ouvert à toute question ou remarque, n'hésite pas à me contacter par messagerie privée à ce sujet.


            Merci d'utiliser les balises de code


            Bonjour,

            Les forums du Site du Zéro disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source.
            Tu as posté un code source sans utiliser cette fonctionnalité. Pourrais-tu éditer ton message afin d'ajouter ces balises ? Pour cela, sélectionne ton code à colorer et utilise le bouton Image utilisateur afin de choisir la coloration adaptée. Veille à bien choisir le langage de programmation afin que la coloration soit pertinente.

            De plus, veille à ce que ton code soit correctement indenté.

            Afin de ne pas surcharger le sujet, ne poste pas ton code coloré dans un nouveau message mais édite le premier (grâce au bouton Image utilisateur).

            Cela aura pour effet de "colorer" ton code et donc d'en faciliter grandement la lecture. Tu auras ainsi beaucoup plus de chances d'avoir des réponses.

            Voici un exemple de code non coloré (mauvais exemple) :
            int main(int argc, char *argv[])
            {
            long choixOperation;

            printf("Choisissez l'operation a effectuer");
            /* etc. */
            }

            Voici maintenant le même code coloré, utilisant la balise "code" (bon exemple) :
            int main(int argc, char *argv[])
            {
                long choixOperation;
            
                printf("Choisissez l'operation a effectuer");
                /* etc. */
            }
            


            C'est plus clair n'est-ce pas ? ;)

            Pour plus d'information à ce sujet, tu peux lire le tutoriel général sur le zCode.

            Merci de ta compréhension. :)
            • Partager sur Facebook
            • Partager sur Twitter

            variable public dans mon premier programme

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown