Modérateur principal 
Inscrit: 21/08/2005 19:40
De France
Post(s): 83
|
Dans le meme esprit et dans ce ce tu veux obtenir je peux te suggérer une autre façon de lire /ecrire/supprimer des données dans un fichier : lecture / ecriture dans fichier en accès aléatoire.
Je me sert d'un controle ListView et dans cet exemple je créé et gère une liste de fichiers mp3
1° définir le type dans module .bas
Type autre_x 'enregistrement liste objet_chemin As String * 200 objet_info As String * 100 objet_genre As String * 100 objet_Niveau_son As Integer objet_enrg As String * 8 End Type 'vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
2° ouvrir le fichier et ajouter du contenu dans ListView1
Dim MyH2 As autre_x,RecordNumber Dim li As ListItem Dim si As ListSubItem Dim sa As ListSubItem Dim sb As ListSubItem Dim sc As ListSubItem RL = Chr$(13) 'retour ligne RLS = Chr$(10) & Chr$(13) & Chr$(10) & Chr$(13) 'retour + saut de ligne
f = FreeFile
If ListView1.ListItems.Count > 0 Then MyNB = 1
On Error GoTo fin1 With CommonDialog1 .DialogTitle = "Ouvrir un fichier liste" .InitDir = Chemin_programme .filename = "*.rfm" .Filter = "fichier (*.rfm)|*.rfm" .ShowOpen End With
fname = CommonDialog1.filename '
MousePointer = vbArrowHourglass
If fname = "" Then fname = "liste.rfm"
' charge les titre ListView1
With ListView1 .ColumnHeaders.Clear .ColumnHeaders.Add , , "Chemin complet du fichier ( liste : " & fname_suprim & " )", 6700 .ColumnHeaders.Add , , "Info / dossier", 2500 .ColumnHeaders.Add , , "Genre", 1300 .ColumnHeaders.Add , , "Volume", 500 .ColumnHeaders.Add , , "Temps piste", 900 End With
Open fname For Random As #f Len = Len(MyH2)
maxnb = LOF(f) \ Len(MyH2) 'Nb d'enregistrement
For RecordNumber = 1 To maxnb Seek #f, RecordNumber ' Définit la position. Get #f, , MyH2 ' Lit les enregistrements et charge dans le controle. Set li = ListView1.ListItems.Add(, , Trim(MyH2.objet_chemin)) ', intIcon) Set si = li.ListSubItems.Add(Text:=Trim(MyH2.objet_info)) Set sa = li.ListSubItems.Add(Text:=Trim(MyH2.objet_genre)) Set sb = li.ListSubItems.Add(Text:=Trim(MyH2.objet_Niveau_son)) Set sc = li.ListSubItems.Add(Text:=Trim(MyH2.objet_enrg)) Next RecordNumber
Close #f ' Ferme le fichier. Set li = Nothing Set si = Nothing Set sa = Nothing Set sb = Nothing Set sc = Nothing 'decharge
MousePointer = vbDefault
Exit Sub fin1: Set li = Nothing Set si = Nothing Set sa = Nothing Set sb = Nothing Set sc = Nothing
MousePointer = vbDefault
'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 3° sauvegarde le fichier
Dim MyH2 As autre_x
Dim li As ListItem Dim si As ListSubItem Dim sa As ListSubItem Dim sb As ListSubItem Dim sc As ListSubItem ' Définit le message.
RL = Chr$(13) 'retour ligne RLS = Chr$(10) & Chr$(13) & Chr$(10) & Chr$(13) 'retour + saut de ligne f = FreeFile
On Error Resume Next If ListView1.ListItems.Count = -1 Then MsgBox "Rien a sauvegarder !", vbExclamation: Exit Sub
ChDrive App.Path ChDir App.Path
fname = "liste.rfm"'nom par défaut du fichier
Kill fname 'je l'efface afin d'avoir la possibilité de le recree 'ListView1.ListItems(1).Selected = True 'demarre 1° index intx = 1 'ListView1.SelectedItem.Index 'défini l'index
Open fname For Random As #f Len = Len(MyH2)
maxnb = ListView1.ListItems.Count 'Nb d'enregistrement
For RecordNumber = 1 To maxnb 'charge dans le controle ListItems les données ListView1.ListItems(intx).Selected = True 'sélectionne le premier index du controle Set li = ListView1.ListItems(intx) 'crée objet principal 1° colonne Set si = li.ListSubItems(1) 'crée objet secondaire 2° colonne If si = "" Then si = "Info_fichier" Set sa = li.ListSubItems(2) 'crée objet secondaire 3° colonne If sa = "" Then sa = "divers" Set sb = li.ListSubItems(3) 'crée objet secondaire 4° colonne If sb = "" Then sb = "0" Set sc = li.ListSubItems(4) 'crée objet secondaire 5° colonne If sc = "" Then sc = RecordNumber 'numéro enregistrement MyH2.objet_chemin = li MyH2.objet_info = si MyH2.objet_genre = sa MyH2.objet_Niveau_son = sb MyH2.objet_enrg = sc ' Écrit l'enregistrement dans le fichier. Put #f, RecordNumber, MyH2 '******************Ecrie******************* intx = intx + 1 'ajoute un enrg Next RecordNumber Close #f ' Ferme le fichier
Set li = Nothing Set si = Nothing Set sa = Nothing Set sb = Nothing Set sc = Nothing 'decharge
'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 4° ' pour modifier un enregistrement je vais le lire
Dim MyURL As autre_x On Error GoTo fin1
Open fname_suprim For Random As #f Len = Len(MyURL)
RecordNumber = Var0 'Var0 = (ListView1.SelectedItem.Index) Seek #f, RecordNumber ' Définit la position. Get #f, , MyURL ' Lit l'enregistrement. Var1 = Trim(MyURL.objet_chemin) Var2 = LCase(Trim(MyURL.objet_info)) Var3 = Trim(MyURL.objet_genre) var4 = MyURL.objet_Niveau_son VarX = MyURL.objet_enrg Close #f ' Ferme le fichier. fin: 'rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr 5° 'apres l'avoir lu le modifier j'utilise InputBox mais bon.... dim etc... '-------------- Title = " Modification de l'info " ' Définit le titre. Message = "En cours :" & Var1 & " Enreg. (" & Var0 & ")" Message = Message & RLS & "Info : " & Var2 Message = Message & RL & "Genre : " & Var3 Message = Message & RL & "Volume : " & var4 Default = Var2 A_info = InputBox(Message, Title, Default) If A_info = "" Then A_info = "Info"
Title = " Modification du genre " ' Définit le titre. Message = "En cours :" & Var1 & " Enreg. (" & Var0 & ")" Message = Message & RLS & "Info : " & A_info Message = Message & RL & "Genre : " & Var3 Message = Message & RL & "Volume : " & var4 Default = Var3 A_genre = InputBox(Message, Title, Default) If A_genre = "" Then A_genre = "Genre"
Title = " Modification du volume " ' Définit le titre. Message = "En cours :" & Var1 & " Enreg. (" & Var0 & ")" Message = Message & RLS & "Info : " & A_info Message = Message & RL & "Genre : " & A_genre Message = Message & RL & "Volume : " & var4 Default = var4 A_volume = InputBox(Message, Title, Default) If A_volume > 0 Then A_volume = 0
' Ouvre le fichier en accès aléatoire. Open fname For Random As #f Len = Len(MyURL) RecordNumber = Var0 'définir l engeristrement qui va etre modifier
' Écrit l'enregistrement dans le fichier. MyURL.objet_chemin = Var1 MyURL.objet_info = A_info MyURL.objet_genre = A_genre MyURL.objet_Niveau_son = A_volume MyURL.objet_enrg = VarX Put #f, RecordNumber, MyURL 'ecrie dans le fichier Close #f ' Ferme le fichier. 'rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
'supprimer un enregistrement de la liste
ListView1.ListItems.Remove (var0)' Var0 = (ListView1.SelectedItem.Index) 'puis goto 3° sauvegarde le fichier
'eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee 'eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
bonne continuation
Contribution le : 26/09/2006 22:38
Edité par kjame sur 27/9/2006 16:07:16 Edité par Toplogteam sur 27/9/2006 17:02:00
|