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
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"
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\"
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)
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
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.
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"
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.
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 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 ).
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. */
}
× 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.
Mon site perso / Retrouvez tous mes tutoriels vidéos à propos de Symfony2 sur Grafikart.fr