Remettre lignes dans un ordre précis

Résolu
z980x Messages postés 897 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 26 juillet 2007 - 13 janv. 2005 à 18:55
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 14 janv. 2005 à 20:27
Salut !



J'ai un fichier qui se présente de cette façon:



119

D:\Mp3\musique1.mp3

147

D:\Mp3\musique4.mp3

156

D:\Mp3\musique3.mp3

263

D:\Mp3\musique2.mp3



J'ai autre part une liste avec des numéros, représentant l'ordre de mes chansons.

Je voudrais que cette liste soit respectée et que les morceaux soient remis dans l'ordre.

Exemple:

Ma liste de zik:

147

263

119

156



Je veux que le fichier final soit:



D:\Mp3\musique4.mp3

D:\Mp3\musique2.mp3

D:\Mp3\musique1.mp3

D:\Mp3\musique3.mp3







Voila, Merci !

6 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
14 janv. 2005 à 18:19
en fait c'est 2 fichiers dans un seul fichier, problème comment savoir à quel moment commence le deuxième fichier ?
il y avait une solution c'est de tester si le numéro est déjà sorti une fois, donc If Table(num) <> "" then --> 2ème fichier mais est-ce que forcémént le fichier correspondant est toujours présent ?
j'ai pris une autre solution c'est de tester si présence de ":" dans la chaîne ce qui oblige à revenir en arrière pour écrire le numéro

Dim Fichier1 As String
Dim fichier2 As String
Dim Ligne As String
Dim Table() As String
Dim num As Integer
Dim Bool As Boolean
ReDim Table(10000)


Fichier1 = "C:\DANIEL\mp31.txt"
fichier2 = "C:\DANIEL\mp32.txt"

Open Fichier1 For Input As #1
Open fichier2 For Output As #2

While Not EOF(1)
Line Input #1, Ligne
num = Ligne
If Bool Then
Print #2, Table(num)
Else
' risque de plantage si la liste derrière
' comprend 1 seul numéro
Line Input #1, Ligne
If InStr(Ligne, ":") > 0 Then
Table(num) = Ligne
Else
Bool = True
Print #2, Table(num)
num = Ligne
Print #2, Table(num)
End If
End If
Wend
Close #1
Close #2

' à utiliser avec prudence
' Kill Fichier1
' Name fichier2 As Fichier1

Daniel
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
14 janv. 2005 à 00:35
principe:
chaque enregistrement est rangé dans une Table indicée par le numéro
ensuite pour l'écriture on a accès direct

Dim num As Integer
Dim Ligne As String
Dim Table() As String
Redim Table(1000)

Open Fichier1 For Input As #1
While Not EOF(1)
Line Input #1, Ligne
num = Ligne
Line Input #1, Ligne
Table(num) = Ligne
Wend
Close#1

Open Fichier2 For Output As #2
print#2, Table(147)
print#2, Table(263)
print#2, Table(119)
print#2, Table(156)
Close#2

Daniel
0
z980x Messages postés 897 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 26 juillet 2007 2
14 janv. 2005 à 17:18
Merci de ton aide, mais en fait j'ai oublié de dire que l'ordre des chansons (numéros) sont a la suite de la liste de chansons.

Voici le fichier:



119

D:\Mp3\fichier.mp3

147

D:\Mp3\fichier.mp3

156

D:\Mp3\fichier.mp3

263

D:\Mp3\fichier.mp3

391

D:\Mp3\fichier.mp3

409

D:\Mp3\fichier.mp3

419

D:\Mp3\fichier.mp3

432

D:\Mp3\fichier.mp3

537

D:\Mp3\fichier.mp3

1355

D:\Mp3\fichier.mp3

2172

D:\Mp3\fichier.mp3

2213

D:\Mp3\fichier.mp3

2221

D:\Mp3\fichier.mp3

537

2221

1355

409

391

2213

263

119

147

432

156

2172

419



Je voudrais que l'es chansons soient remises en ordre grace à leur identifiant et la l'ordre de la liste...



Voila !

Merci !
0
z980x Messages postés 897 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 26 juillet 2007 2
14 janv. 2005 à 18:37
Salut,



bon, alors entre la liste des fichiers et l'ordre, je peux mettre n'importe quoi, ya pas de problème à ce niveau la.

Mais ca va planter ta méthode. Imaginons que j'ai deux fois le même morceau à la suite, et hop, c'est mort.

Sinon, je ne comprends pas pourquoi tu mets ":"



Est ce que je peux t'envoyer ma source pour que tu comprennes?



Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
14 janv. 2005 à 18:54
pas de problème tu peux mettre autant fois le même morceau dans la Liste ça ne gêne pas.
le seul plantage que je vois c'est si la liste ne comprend qu'un seul numéro et là le programme se plante dans la deuxième lecture ...

Daniel
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
14 janv. 2005 à 20:27
j'ai raccourci la deuxième partie du programme:

Private Sub Command2_Click()
Dim Buffer As String
Dim Canal As Integer
Dim i As Integer

For i = 0 To List1.ListCount - 1
Buffer = Buffer & List1.List(i) & vbCrLf
Next

Buffer = Replace(Buffer, "<key>Track ID</key>", "")
Buffer = ......
Buffer = ......

Dialog2.Flags = cdlOFNOverwritePrompt + cdlOFNNoReadOnlyReturn
Dialog2.Filter = "Playlists *.m3u (*.m3u)|*.m3u"
Dialog2.DialogTitle = "Fichier m3u à enregistrer sous..."
Dialog2.ShowSave

Dialog2.ShowSave
Dialog2.FileTitle = "Fichier m3u à enregistrer sous..."

Canal = FreeFile
Open Dialog2.FileName For Binary Access Write As #Canal
Put Canal, , Buffer
Close #Canal

Daniel
0