Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 2013
-
6 nov. 2009 à 19:05
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 2013
-
20 nov. 2009 à 18:01
Bonsoir la team.
Voila la question : j'arrive à enregistrer en binaire une listview via la sérialisation d'un tableau, mais je péche pour pouvoir lui y adjoindre des lignes de textes simple. (d'autres données en sommes qui ne font partis du tableau de la listview) ça me saoule grave. Je vous joins le code que j'utilise, d'avance merci bien pour votre coup de pouce. @dn
'----------------------------------------------------------------------
' enregistrement du code et des lignes dans un tableau puis enregistrement via la sub REC()
'----------------------------------------------------------------------
Sub save()
Dim tableau(Form1.ListView1.Items.Count - 1, Form1.ListView1.Columns.Count - 1) As String
Dim liste As New ListViewItem
For ligne As Integer = 0 To Form1.ListView1.Items.Count - 1
liste = Form1.ListView1.Items(ligne)
For Colonne As Integer = 0 To Form1.ListView1.Columns.Count - 1
tableau(ligne, Colonne) = liste.SubItems(Colonne).Text
Next
Next
rec(tableau) 'sérialisation du tableau en binaire !
End Sub
'----------------------------------------------------------------------
' fonction qui sérialise un tableau à n dimension puis l'enregistre en binaire
'----------------------------------------------------------------------
Sub rec(ByVal datas As Object) ' enregistre un object en binaire
Dim myFileStream As Stream = File.Create(ma_sauvegarde)
Dim serializer As New BinaryFormatter
serializer.Serialize(myFileStream, datas)
myFileStream.Close()
End Sub
'----------------------------------------------------------------------
' fonction qui lit le fichier sérialisé et qui retourne un tableau à n dimensions
'----------------------------------------------------------------------
Public Function lire(ByVal fichier As String) As String(,)
Dim tableau(,) As String = {{""}, {""}} 'création d'un tableau vide
Try
Dim myFileStream As Stream = File.OpenRead(fichier)
Dim deserializer As New BinaryFormatter()
tableau = CType(deserializer.Deserialize(myFileStream), Array)
myFileStream.Close()
Return tableau
Catch ex As Exception
MsgBox("impossible à lire")
Return tableau
End Try
End Function
'----------------------------------------------------------------------
Tiens les balises ne sont pas reconnues ^_____^, zut alors.....
A voir également:
Enregistrer un tableau, mais aussi des lignes de text simples
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 20131 20 nov. 2009 à 11:20
la méthode Add ? Ben il aurait falut une boucle sur principal.mon_compte.budgets.lengh-1. Là c'est en direct. Ce qui ne marche pas en revanche c'est le datasource de la combo car il se place en lecture seul, pas moyen de modifier les items de la combo.
Voila. ++
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 20 nov. 2009 à 12:48
Re,
Oui en effet AddRange convient beaucoup mieux (c'était juste pour savoir si Add fonctionnait...).
Pour ce qui est du DataSource c'est normal, la propriété DataSource te permet de spécifier une source de données (DataTables, tableaux, Classes, Stuctures, strings etc...). Etant données que le combo ne connais pas à l'avance le type de données, il ne connais pas non plus les méthodes de l'objet pour ajouter des données dans celui-ci, donc readonly...
Tu aurais du en fait, remplacer tes tableaux par des listes (List [Of ...]), les listes sont sérialisables en principe.
Exemple :
'Pour charger le tableau dans le combo
Dim Tab As New List(Of String)
ComboBox1.Items.AddRange(Tab)
'Pour mettre à jour ta liste
Tab.Items.Clear
Tab.AddRange(ComboBox1.Items)
Tu peux par exemple remplacer ton type de propriétés (String()) par list (Of String) tout simplement et suivre le schéma ci-dessous.
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 20131 20 nov. 2009 à 18:01
Ah àa c'est une bonne astuce, car les tableaux non pas la propriété addrange et items, alors que visiblement les list oui.
Bon écoute maintenant c'est fait comme ça ^^
Mais je vais essayer de faire comme cela pour la derniére propriété de ma class compte :
L'échéancier (une ligne normal, mais qui revient tous les mois)
Merci pour les astuces et A plus pour de nouvelles aventures. @DN