marcod59
Messages postés170Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention13 juin 2010
-
6 août 2006 à 10:27
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
6 août 2006 à 22:47
Bonjour,
J'ai une list que je rempli avec une partie d'un fichier .ini dont voici le code :
i = 0
Open App.Path & "\config.ini" For Input As #1
Do While Not EOF(1)
i = i + 1
Line Input #1, lig
If i > 8 Then
List1.AddItem lig
End If
Loop
Close #1
Comment effacer une ligne qui est intercalée entre deux, et que la ligne qui la suivait prenne sa place. (donc ne pas avoir de trous dans le fichier.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 6 août 2006 à 11:59
8Une collection c'est pour y placer des Items (donc ici, par exemple, tes lignes du fichier ini).
Cela se déclare comme ceci :
Dim MesDonnees As New Collection
Dim i As Long
Dim lig As String
i = 0
Open App.Path &"\config.ini" For Input As #1
Do While Not EOF(1)
i = i + 1
Line Input #1, lig
MesDonnees.Add lig 'rajoute cette ligne
If i > 8 Then
List1.AddItem lig
End If
Loop
Close #1
Puis,
Sub Reecriture_Ini()
Dim i As Long
MesDonnees.Remove NomDeTaForm.List1.ListIndex + 1
Open App.Path &"\config.ini" For Output As #ff
For i = 1 To MesDonnees.Count
Print #ff, MesDonnees(i)
Next i
Close #ff
End Sub
++
Vous n’avez pas trouvé la réponse que vous recherchez ?
marcod59
Messages postés170Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention13 juin 2010 6 août 2006 à 21:10
Lorsque je lance la fonction Reecriture_Ini ça se plante sur la ligne Open, et le message d'erreur et le suivant : Erreur d'exécution '52'. Nom de fichier ou numéro de fichier incorrect.
Le nom etant correct, cela doit être le numéro, et lorsque je fait un débogage i a la valeur 0 et ListIndex la valeur de 1. Par contre, #ff n'a aucun numéro, est-ce que ça vient de lui ?
marcod59
Messages postés170Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention13 juin 2010 6 août 2006 à 21:32
Entre temps j'ai essayé ta 1ère procédure avec #1, et j'ai eu le même résultat qu'avec la nouvelle. Cela m'efface la deuxième ligne, alors que j'aimerais effacer la ligne que je selectionne dans la List1 qui sera toujours une ligne supérieure à 8 d'où le If i > 8 Then.
A oui, ta procédure je l'ai mise dans Private Sub List1_Click(). J'ai supposé que c'était là ou il était le mieux.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 6 août 2006 à 21:39
je t'ai fait une modif (la première ligne) :
<small> Coloration syntaxique automatique </small>
Sub Reecriture_Ini()
' *** rajoute cette ligne
If List1.ListCount < 9 Then MsgBox "Pas assez de données": Exit Sub
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 6 août 2006 à 21:49
Mais en fait je visualise pas trop
Peux tu me donner plus de precisions, comme
* Combien doit il y avoir de données au minimum dans la List1 pour lancer l'éffacement ;
* Le premier élément de la List1, correspond à quelle ligne du fichier .ini ;
* Tu dis "il m'efface toujours la 2ème ligne du fichier", qu'aurais tu aimé qu'il fasse ?
Merci
@++
Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
marcod59
Messages postés170Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention13 juin 2010 6 août 2006 à 22:00
Les 8 premières lignes servent à autre chose, et je ne les affiche pas. Donc, j'affiche dans la List1 à partir de la ligne 9, et je voudrais mettre ou enlever les données comme je le souhaite.
Par contre en écrivant ce message, je viens de me dire que pour simplifier la chose je n'avais qu'à créer un autre fichier où il n'y aurait que ces données. Qu'en penses-tu ? Ou as-tu la solution avec un seul fichier ?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 6 août 2006 à 22:20
Alors essaie ceci (cette fois, ça devrait être bon, ou pas loin, ) :
<small> Coloration syntaxique automatique </small>
Dim MesDonnees As New Collection
Dim MesHuitDonnees As String()
' *** ^^ ces 2 variables sont à placer dans les déclarations
Dim i As Long
Dim lig As String
i = 0
Open App.Path &"\config.ini" For Input As #1
Do While Not EOF(1)
i = i + 1
Line Input #1, lig
If i > 8 Then
MesDonnees.Add lig
List1.AddItem lig
Else
MesHuitDonnees(i) = lig
End If
Loop
Close #1
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 6 août 2006 à 22:22
Oups, vite vite, une petite correction (au début :
Dim MesDonnees As New Collection
Dim MesHuitDonnees As String()
' *** ^^ ces 2 variables sont à placer dans les déclarations
Dim i As Long
Dim lig As String
ReDim MesHuitDonnees As String(1 To 8) ' *** j'ai omis cette ligne
@++
Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
marcod59
Messages postés170Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention13 juin 2010 6 août 2006 à 22:43
Ne tiens pas compte de mon dernier message, je n'avais pas encore eu tes 2 autres modifs. Maintenant ça fonctionne très bien.
Je te remercie pour ta patience et tes compétences et te souhaite une bonne nuit et de bonnes vacances si tu y es.