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 :

Comparaison de deux variables tabbleau


Sujet :

VB.NET

  1. #41
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 51
    Points : 12
    Points
    12
    Par défaut
    Je connaissait ce mode pas à pas mais sans l'avoir utilisé et surtout sans comprendre comment l'utiliser !
    En gardent la classe telle quelle , j'ai testé le code suivant!
    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
    Imports System.IO
    
    Public Class Form1
        Dim PluginSettings As cMySettings
        Dim TempPluginSettings As cMySettings
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    
            ' Settings
            PluginSettings = New cMySettings(Path.Combine(Application.StartupPath, "SettingsXml"))
            ' read in defaults
            cMySettings.DeseralizeFromXML(PluginSettings)
    
            ' copy to temp
            TempPluginSettings = New cMySettings(PluginSettings)
    
            TextBox1.Text = TempPluginSettings.PhoneCountryCodes(1)
            Button1.Enabled = False
    
        End Sub
    
        Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
            TempPluginSettings.PhoneCountryCodes(1) = TextBox1.Text
            Button1.Enabled = True
        End Sub
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            If cMySettings.Compare(PluginSettings, TempPluginSettings) = False Then
                cMySettings.Copy(TempPluginSettings, PluginSettings)
                cMySettings.SerializeToXML(PluginSettings)
            End If
        End Sub
    End Class
    Sur la ligne TextBox1.Text = TempPluginSettings.PhoneCountryCodes(1) je vois toujours 33 quelque soit la valeur dans le fichier xml !

  2. #42
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 51
    Points : 12
    Points
    12
    Par défaut
    Après divers essais, j'ai constaté que le problème est situé au niveau de la fonction SetDefault qui force la variable à 33 au lieu de lire le fichier xml !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Public Shared Sub SetToDefault(ByRef Settings)
            'Settings.PhoneCountryCodes = New List(Of String) From {"0", "33", "00"}
            Settings.PhoneCountryCodes = New List(Of String)
     
        End Sub
    La fonction compare fonctionne , la copie aussi !

    Le seul problème est que si mon fichier xml n'existe pas , il n'est pas créé par défaut !

    Dois je rajouter un test sur l'existance de ce fichier dans la fonction SetDefault ou y a-il une meilleur méthode ?

    PS j'ai aussi testé avec des ArrayList avec le même résultat
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    Option Strict Off
    Option Explicit On
     
    Imports System.IO
    Imports System.Xml
    Imports System.Xml.Serialization
    Imports System.Text
    Imports System.Collections.Generic
     
     
    Public Class cMySettings
     
        Public PhoneCountryCodes As ArrayList
     
        Private Shared XMLFilename As String
     
        Public Sub New()
            SetToDefault(Me)
     
        End Sub
     
        Public Sub New(FileName As String)
            XMLFilename = FileName
            If Path.GetExtension(XMLFilename).ToLower() <> "xml" Then XMLFilename = XMLFilename + ".xml"
            If File.Exists(XMLFilename) = False Then SerializeToXML(New cMySettings())
        End Sub
     
        Public Sub New(ByRef Settings As cMySettings)
            Me.PhoneCountryCodes = New ArrayList(Settings.PhoneCountryCodes)
     
        End Sub
     
        Public Shared Sub SerializeToXML(ByRef Settings As cMySettings)
     
            Dim xmlSerializer As New XmlSerializer(GetType(cMySettings))
     
            Using xmlTextWriter As New XmlTextWriter(XMLFilename, Encoding.UTF8)
                xmlTextWriter.Formatting = Formatting.Indented
                xmlSerializer.Serialize(xmlTextWriter, Settings)
                xmlTextWriter.Close()
            End Using
     
     
        End Sub
     
        Public Shared Sub DeseralizeFromXML(ByRef Settings As cMySettings)
     
            Dim fs As FileStream = Nothing
     
            ' do i have settings?
            If File.Exists(XMLFilename) = True Then
                Try
                    fs = New FileStream(XMLFilename, FileMode.Open, FileAccess.Read)
                    Dim xmlSerializer As New XmlSerializer(GetType(cMySettings))
                    Settings = xmlSerializer.Deserialize(fs)
                Catch
                    'load error of some sort, or OBJECT deserialize error
                    'do we tell anyone?
                    Exit Sub
                Finally
                    If Not fs Is Nothing Then fs.Close()
                    fs = Nothing
                End Try
            End If
     
        End Sub
     
        Public Shared Sub Copy(ByRef SourceSettings As cMySettings, ByRef DestSettings As cMySettings)
     
            'DestSettings.PhoneCountryCodes = SourceSettings.PhoneCountryCodes
            DestSettings.PhoneCountryCodes.Clear()
            For i As Integer = 0 To 2 'avec for next
                DestSettings.PhoneCountryCodes.Add(SourceSettings.PhoneCountryCodes(i))
            Next
     
        End Sub
     
        Public Shared Sub SetToDefault(ByRef Settings)
            Settings.PhoneCountryCodes = New ArrayList() 'From {"0", "33", "00"}
     
        End Sub
     
        Public Shared Function Compare(ByRef Settings1 As cMySettings, ByRef Settings2 As cMySettings) As Boolean
     
            For i As Integer = 0 To 2
                If Not String.Compare(Settings1.PhoneCountryCodes(i), Settings2.PhoneCountryCodes(i)) = 0 Then
                    Return False
                End If
            Next
     
            Return True
        End Function
     
    End Class

  3. #43
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Le seul problème est que si mon fichier xml n'existe pas , il n'est pas créé par défaut !
    Bah voilà tout est dit

    Dois je rajouter un test sur l'existance de ce fichier dans la fonction SetDefault ou y a-il une meilleur méthode ?
    Bah oui c'est bien...

    Je pense d'ailleurs que le sujet peut être marqué... N'ayant plus de problème technique.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  4. #44
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 51
    Points : 12
    Points
    12
    Par défaut
    Tester l'existence du fichier xml me semblait difficile dans la classe, ne voulant pas écrire son nom en dur.
    J'ai donc pensé à une autre solution, ajouter une option à la fonction SetDefault(Byref Settings as Object, Optional ResetTrue as Boolean = False)
    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
        Public Shared Sub SetToDefault(ByRef Settings As Object, Optional ResetTrue As Boolean = False)
            Try
                Settings.PhoneDebugLog = False
                Settings.PhoneMacAddress = "01:02:03:04:05:06"
                Settings.PhoneMacAddress2 = "07:08:09:10:11:12"
                Settings.RunOnStart = True
                Settings.PhoneBookUpdate = True
                Settings.PhoneBookListUpdate = True
                Settings.PhoneBookList = "PB,ICH,OCH,MCH,CCH"
                Settings.PhoneBookUseSIM = False
                Settings.PhoneBookUseVcardSupplement = False
                Settings.SmsServiceCentreAddress = "0102030405"
                Settings.EmergencyNumber = "112"
                Settings.AutoSwapPhone = False
                Settings.PhoneSpeechNumbers = "zero,one,two,three,four,five,six,seven,eight,nine,more,star,sharp,delete,cancel,call,stop call,help call,by name,-,-,-"
                Settings.PhoneSpeechRecognition = False
                'Settings.PhoneCountryCodes = "0,33,00"
                If ResetTrue = True Then Settings.PhoneCountryCodes = New List(Of String) From {"0", "33", "00"}
                If ResetTrue = False Then Settings.PhoneCountryCodes = New List(Of String)
                Settings.PhoneAlarm1 = """01:00""|1|1|""Alarm Text 1""|""1"""
                Settings.PhoneAlarm2 = """02:00""|2|1|""Alarm Text 2""|""1,2"""
                Settings.PhoneAlarm3 = """03:00""|3|1|""Alarm Text 3""|""1,2,3"""
                Settings.PhoneAlarm4 = """04:00""|4|1|""Alarm Text 4""|""1,2,3,4"""
                Settings.PhoneAlarm5 = """05:00""|5|1|""Alarm Text 5""|""1,2,3,4,5"""
                Settings.LockInMotion = True
    
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
    
        End Sub
    En début de mon programme principal, j'ai ajouté un test sur la valeur de la variable TempPluginSettings.PhoneCountryCodes(1)
    Au premier démarrage, le fichier .xml est créé mais sans les variables de la List(Of String)
    Avec ce test, je force la mise à jour avec l'option ResetTrue = True
    C'est pas bien catholique , mais cela fonctionne !!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ' check if PhoneCountryCodes as the good format, if not the file is updated  with the default values ("0","33","00") 
            If TempPluginSettings.PhoneCountryCodes(1) = Nothing Then
                cMySettings.SetToDefault(PluginSettings, True)
                ' copy to temp (skin views temp)
                cMySettings.Copy(PluginSettings, TempPluginSettings)
                cMySettings.SerializeToXML(PluginSettings)
            End If
    Merci à tous pour votre aide qui m'a permit d'avancer !

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. Comparaison de deux variables.
    Par yann123456 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/03/2010, 16h38
  2. Comparaison entre deux variables avec if
    Par sbouchaibi dans le forum ASP
    Réponses: 1
    Dernier message: 04/03/2010, 12h27
  3. Réponses: 2
    Dernier message: 10/04/2009, 14h34
  4. Comparaison entre deux variables
    Par BHMath76 dans le forum ASP
    Réponses: 5
    Dernier message: 10/10/2008, 11h44
  5. Comparaison entre deux variables
    Par delavega dans le forum ASP
    Réponses: 8
    Dernier message: 23/11/2006, 16h42

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