Help me!!! pour sauvegarder ma listview svp (vb.net)

Résolu
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010 - 23 mai 2004 à 17:21
jsiegwald Messages postés 20 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 5 avril 2009 - 28 févr. 2009 à 21:14
Salut à tous,

J'ai un code du genre


Dim Dates As String
            Dim i As Integer
            For i = 1 To ListView.Items.Count
                Dates = Dates & ListView.Items(i).SubItems(0).Text & vbcrlf & ListView.Items(i).SubItems(1).Text & vbcrlf & ListView.Items(i).SubItems(2).Text & vbcrlf & ListView.Items(i).SubItems(3).Text & vbcrlf & ListView.Items(i).SubItems(4).Text & vbcrlf 
            Next i
Retour = SaveFileDialog.ShowDialog()
            If Retour = 1 Then
                FileOpen(1, SaveFileDialog.FileName, OpenMode.Binary)
                FilePut(1, Dates)
                FileClose(1)
end if


Et je n'y arrive pô a chaque foi ca bug je sais vraiment pô koi faire (j'ai tout essayer) et puis en même temps comment on pe faire pour r'ouvrir ma Listview car j'ai peur de galêrer????

ATTENTION C'EST EN VB.NET

Merci d'avance

4 réponses

alicvb Messages postés 134 Date d'inscription vendredi 19 mars 2004 Statut Membre Dernière intervention 6 juin 2007 1
23 mai 2004 à 21:25
Déjà, tu as surement un problème lors de ta boucle pour récupérer tes infos :
i varie de 1 à NBdeItems
Mais les items sont indexés à partir de 0, donc le premier item est 0 et le dernier est NBdeItems-1
Fais donc varier i de 0 à NBdeItems-1, ca évitera de planter dans ta boucle

Pour l'écriture dans le fichier, moi j'utilise plutôt IO, mais bon, je suppose que ta méthode doit marcher

Pour retrouver tes infos, il faut que tu aies une marque qui te permette de savoir quand tu change de ligne dans ton listview.
Perso, en général, j'écris les choses ainsi :

item1|item2|item3|item4
item1|item2|item3|item4
item1|item2|item3|item4

donc en gros, une ligne de ton fichier=une ligne du listview
et le caractère | sert de séparateur entre les items

du coup, pour lire ton fichier :

dim val() as string
dim fs as new io.fillestream("taratata.txt",open)
dim str as new io.streamreader(fs)
dim lvi as listviewitem

do until str.peek=-1
val=str.readline.split("|")
lvi=listview.items.add(val(0))
for i=1 to val.lenght-1
lvi.subitems.add(val(i))
next
loop

str.close
fs.close

Je copie ce code de mémoire. Il y a donc surement des choses qui manquent (je sais par exemple que items.add réclame aussi la taille de la colone et je sais plus quoi.

Je te laisse le soint de peaufiner tout ça...

Est-ce que cela répond à ton problème ?
3
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
23 mai 2004 à 23:39
Salut à tous,

c cool ca marche je te remercie bcp
je met le code pour ceux ke ca interresse car j'ai dû le modifier

Pour SAUVEGARDER une ListView de 5 colonnes
Retour = SaveFileDialog.ShowDialog()
            If Retour = 1 Then
                Dim Dates As String
                Dim i As Integer
                For i = 0 To ListView.Items.Count - 1
                    Dates = Dates & ListView.Items(i).SubItems(0).Text & "|" & ListView.Items(i).SubItems(1).Text & "|" & ListView.Items(i).SubItems(2).Text & "|" & ListView.Items(i).SubItems(3).Text & "|" & ListView.Items(i).SubItems(4).Text & vbCrLf
                Next i
                FileOpen(1, SaveFileDialog.FileName, OpenMode.Binary)
                FilePut(1, Dates)
                FileClose(1)
end if


Ensuite pour OUVRIR
Dim Retour As Integer
        Retour = OpenFiledialog.ShowDialog()
        If Retour = 1 Then
            FileOpen(1, OpenFiledialog.FileName, OpenMode.Binary)
            FileClose(1)

        Dim val() As String
            Dim fs As New IO.FileStream(OpenFiledialog.FileName, FileMode.Open)
        Dim str As New IO.StreamReader(fs)
        Dim lvi As ListViewItem
        Dim i As Integer
        Do Until str.Peek = -1
            val = str.ReadLine.Split("|")
            lvi = ListView.Items.Add(val(0))
            For i = 1 To val.Length - 1
                lvi.SubItems.Add(val(i))
            Next
        Loop

        str.Close()
        fs.Close()



Voila normalement ca dvrai fonctionner

merci encore à toi alicvb!!!!

ATTENTION C'EST EN VB.NET

Merci d'avance
0
ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010
5 juil. 2004 à 20:43
Salut à tous,

just un truc k'il ne fonctionne pô c en fait kan je sauvegarde un é ou un ö (en fait toutes les lettres ki ont des accents) bah kan on sauvegarde ca marche mai par contre kan on l'ouvre il me supprime systêmatiquement la lettre c bizarre ex: Grêce (A la sauvegarde)
Quan on l'ouvre ca donne Grce.

ATTENTION C'EST EN VB.NET

Merci d'avance
0
jsiegwald Messages postés 20 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 5 avril 2009
28 févr. 2009 à 21:14
Bonjour à tous,

Alors voilà, je me permets de relancer le post pour ce problème d'accent... Est-ce que quelqu'un a une idée ?

Merci d'avance
0
Rejoignez-nous