Bonjour, Bonsoir!
Voici mon problème :
Je possède un tableau multidimensionnel, de deux dimensions :
Ce tableau est "dynamique", (exemple : MyArray(47, ∞) )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Module Module1 Public MyArray(47, 0) As String End Module
Et il contient aussi bien des chiffres, que des lettres.
Voici mon problème :
J'aimerais que lors de la fermeture de ma form, lors de l'arrêt de mon programme, ce tableau stock ses valeurs quelque part et lors de la re-éxecution de mon programme il les reprennent.
Une personne dont j'ai oublié le nom (excuse moi) sur le chat du site m'a conseillé d'aller voir du côté de la sérialisation.
Chose dite chose faite, problème.
Comment sérialiser un tableau à deux dimensions ?
J'ai essayé ceci :
Mais bien sûr ça ne fonctionne pas :/ Du moins je récupère bien mes informations dans mon fichier mais lorsqu'il s'agit de les récupéré c'est plus complexe.
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 Imports System.IO Imports System.Runtime.Serialization.Formatters.Binary Module Module 1 Public MyArray(47, 0) As String Public Sub Keep() Dim f As New BinaryFormatter() Dim fs As New FileStream("File.bin", FileMode.Create) f.Serialize(fs, MyArray) fs.Close() End Sub Public Sub Going() Dim fs As New FileStream("File.bin", FileMode.Open) Dim f As New BinaryFormatter Dim Dw(,) As String = f.Deserialize(fs) fs.Close() MyArray = Dw End Sub End Module
J'ai trouvé sur Internet des personnes qui Sérialiser leur tableau à 2 dimensions mais qui ne le stocker pas fin à ce que j'ai cru comprendre.
Voici le fameux code :
Source : http://www.dreamincode.net/forums/to...nsional-array/
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 Imports System.IO Imports System.Runtime.Serialization.Formatters Module Module1 Sub Main() Dim rnd As New Random Dim intArr(5, 5) As Int32 For i As Int32 = 0 To 5 For j As Int32 = 0 To 5 intArr(i, j) = rnd.Next(10, 100) Next Next Dim f As New Binary.BinaryFormatter() Dim ms As New MemoryStream() f.Serialize(ms, intArr) Dim byArr As Byte() = ms.ToArray() Dim str_b64 As String = Convert.ToBase64String(byArr) Dim ms2 As New MemoryStream(Convert.FromBase64String(str_b64)) Dim intArr2(,) As Int32 = f.Deserialize(ms2) End Sub End Module
Je viens donc ici vous posez ces questions :
Sérialiser/De-sérialiser mon tableau est - elle la meilleur solution ?
Dois-je remplacer mon tableau par une classe ?
Binaire ou XML ? si il y a Sérialisation/De-sérialisation.
J'espère avoir été assez clair/compréhensible ^^'
Merci.
Bonne journée, soirée, nuitée...
Partager