Bonjour à tous.
J'ai un bout de mon code qui m'affiche un défaut lors de son exécution.
Voici le code en question :
Code de démarrage de mon application.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Private Sub Demarrage_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'S'exécute lors du chargement de la fenêtre Demmarrage.' LitClasses(Nom_Fichier_Data) 'Exécute la procédure LitClasses.' LitParametres(Nom_Fichier_Param) 'Exécute la procédure LitParamètres.' End Sub 'Fin de procédure.'
La procédure LitClasses est la suivante :
Cette partie là fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub LitClasses(ByVal FileNamedecrypt As String) If File.Exists(FileNamedecrypt) Then Données = LitDataXMLData(FileNamedecrypt) 'Exécute la fonction LitDataXMLData.' Else Données = New Data EcritDataXMLData(FileNamedecrypt, Données) 'Exécute la procédure EcritDataXMLData avec les paramètres FileNamedecrypt et Données.' End If End Sub
La fonction LitDataXMLData est la suivante :
Là aussi pas de problè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 Function LitDataXMLData(ByVal filename As String) As Data Try Using objStreamReader As New IO.StreamReader(filename) Try Return DirectCast((New XmlSerializer(GetType(Data))).Deserialize(objStreamReader), Data) Catch ex As Exception Erreur = True MessageBox.Show("Echec de la lecture." & ex.Message) End Try End Using Catch ex As Exception Erreur = True MessageBox.Show("Fichier inaccessible." & ex.Message) End Try Return Nothing End Function
La procédure EcritDataXMLData :
Toute cette partie fonctionne.
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 Sub EcritDataXMLData(ByVal filename As String, lesClasses As Data) Try Using objStreamWriter As StreamWriter = New StreamWriter(filename) Try Dim xsClasses As New XmlSerializer(GetType(Data), New XmlRootAttribute("Data")) xsClasses.Serialize(objStreamWriter, lesClasses) Catch ex As Exception Erreur = True MessageBox.Show("Echec de l'écriture." & ex.Message) End Try End Using Catch ex As Exception Erreur = True MessageBox.Show("Fichier inaccessible." & ex.Message) End Try End Sub
Maintenant, la procédure LitParamètres (celle qui me plante le programme) :
Il faut savoir que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub LitParametres(ByVal FileNamedecrypt As String) If File.Exists(FileNamedecrypt) Then 'If File.Exists(FileNamecrypt) Then Paramètres = LitDataXMLPropriétés(FileNamedecrypt) Else Paramètres = New Propriétés 'Créé un nouvel objet Propriétés de nom "Paramètres".' EcritDataXMLPropriétés(FileNamedecrypt, Paramètres) End If End Sub
et que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Public Paramètres As Propriétés
Pour ce qui est de la fonction LitDataXMLPropriétés et de la procédure EcritDataXMLPropriétés :
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 <XmlRoot("Propriétés")> Public Class Propriétés <XmlElement("Couleur")> Public Property Valeurs_RVB As New Couleurs <XmlAttribute("Activer_Modification_MDP")> Public Property Act_MDP As New Activ_MDP <XmlElement("Classe")> Public Property Classe As New List(Of Classes) End Class Public Class Couleurs <XmlAttribute("Rouge")> Public Property Rouge As Integer = 255 <XmlAttribute("Vert")> Public Property Vert As Integer = 255 <XmlAttribute("Bleu")> Public Property Bleu As Integer = 128 End Class Public Class Activ_MDP <XmlAttribute("Valeur")> Public Property Autor_MDP As Boolean = False End Class Public Class Classes <XmlAttribute("Nom_Classe")> Public Property Nom_Classe As String = "" <XmlElement("Exercice")> Public Property Exercice As New List(Of Exercices) End Class Public Class Exercices <XmlAttribute("Titre")> Public Property Titre As String = "" <XmlAttribute("Catégorie")> Public Property Catégorie As String = "" <XmlAttribute("Règles")> Public Property Règles As String = "" <XmlElement("Ligne_Exercice")> Public Property Ligne_Exercice As New List(Of Lignes_Exos) End Class Public Class Lignes_Exos <XmlAttribute("Type_Réponse")> Public Property Type_Réponse As String = "" <XmlAttribute("Phrase_1")> Public Property Phrase_1 As String = "" <XmlAttribute("Réponse")> Public Property Réponse As String = "" <XmlElement("Choix_Mots")> Public Property Choix_Mots As New List(Of Choix_de_mots) <XmlAttribute("Phrase_2")> Public Property Phrase_2 As String = "" End Class Public Class Choix_de_mots <XmlAttribute("Mot")> Public Property Mots As String = "" End Class
C'est donc lors de la lecture ou l'écriture de mon fichier de propriétés, que le logiciel plante et me dit qu'il ne peut lire, ni même écrire (ou créer) mon fichier...
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 Function LitDataXMLPropriétés(ByVal filename As String) As Propriétés 'Créé la fonction lecture du fichier xml' Try 'Essaye le code suivant :' Using objStreamReader As New StreamReader(filename) 'Utilise le flux de données du fichier "filename"' Try 'Essaye le code suivant : ' Return DirectCast((New XmlSerializer(GetType(Propriétés))).Deserialize(objStreamReader), Propriétés) 'Sérialise le fichier xml' Catch ex As Exception 'Si l'essais échoue' Erreur = True 'Met le booléen en valeur "vrai"' MessageBox.Show("Echec de la lecture." & ex.Message) 'Affiche un message d'erreur' End Try 'Fin de l'essais du code' End Using 'Coupe toutes ressources utilisées pour créer le flux.' Catch ex As Exception 'Si le fichier n'existe pas' Erreur = True 'Met le booléen en valeur "vrai"' MessageBox.Show("Fichier inaccessible." & ex.Message) 'Affiche un message contenant l'erreur.' End Try 'Fin de l'essais du code' Return Nothing End Function Sub EcritDataXMLPropriétés(ByVal filename As String, paramètres As Propriétés) Try Using objStreamWriter As StreamWriter = New StreamWriter(filename) Try Dim xsPropriety As New XmlSerializer(GetType(Propriétés), New XmlRootAttribute("Propriétés")) xsPropriety.Serialize(objStreamWriter, paramètres) Catch ex As Exception Erreur = True MessageBox.Show("Echec de l'écriture." & ex.Message) End Try End Using Catch ex As Exception Erreur = True MessageBox.Show("Fichier inaccessible." & ex.Message) End Try End Sub
J'ai beau tourner mon code dans tous les sens je ne trouve pas....
Désolé pour toute cette lecture et merci de votre aide par avance.
Partager