TRI ET GROUPEMENT DE FICHIERS .MP3 SELON LE CONTENU DE LEURS TAGS
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 2008
-
13 avril 2007 à 13:32
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 2013
-
15 avril 2007 à 11:54
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 15 avril 2007 à 11:54
C'était ma première contribution il y a de ça plusieurs années...
J'ai mis à jour entre temps, les remarques de Kleidp ne sont donc plus d'actualités.
Si je te donne ces classes comme références, c'est qu'il y a quelques similarité (lecture d'un fichier MP3) et que le code est mieux écrit.
Libre à toi de t'en inspirer.... ou pas.
Vallorbain
Messages postés29Date d'inscriptionvendredi 18 juillet 2003StatutMembreDernière intervention 1 février 2019 15 avril 2007 à 10:51
Hello Bidou,
Je suis très étonné que tu me site un tel code comme référence...
- Pas de GUI.
- Pas d'executable.
- Ouverture d'un fichier sans le refermer.
- Dérivation de code existant.
- Commentaire de Kleidp...
Plutôt que de dire "on peut faire encore pas mal d'améliorations", indique moi les améliorations que tu aimerais voir, cela sera plus constructif...
Le programme que je fournis est opérationnel.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 14 avril 2007 à 18:04
C'est beaucoup mieux mais on peut faire encore pas mal d'améliorations...
Peut-être que le premier code que j'avais posté sur le site pourra te donner quelques pistes:
http://www.csharpfr.com/codes/ID3_26182.aspx
(Pour le padRight/padLeft, je me suis trompé de fonction, c'est Trim en fait)
Vallorbain
Messages postés29Date d'inscriptionvendredi 18 juillet 2003StatutMembreDernière intervention 1 février 2019 14 avril 2007 à 16:38
Le programme a été mis à jour :
- Multi-threading.
- Meilleur utilisation de Path.
- Suppresion de l'accès à la registry.
- Ajout d'un fichier de config.
Pour Bidou : L'utilisation de padRight et padLeft ne fait pas de sens dans le contexte. Lis mieux le code.
A+
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 13 avril 2007 à 19:55
Pas de multi-threading = programme inutilisable s'il fait des longs traitement (ça peut être le cas du tient). Si tu ne sais pas ce que c'est les threads, n'hésites pas à chercher de la doc. Mx à également fait un bon tuto sur le cross-threading que tu trouveras sur ce site.
Utiliser la registry est assez mauvais. Parfois (souvent?) on a pas les droits pour y lire/écrire, alors qu'on a toujours les droits pour écrire un fichier, ne serait-ce dans les documents du user (app data).
Pour le reste, tu peux revoir une bonne partie du code qui se simplifie énormément, ce que je t'ai donné plus haut c'est juste ceux que j'ai vu en lisant le code en diagonale mais y'en assurément beaucoup d'autre.
Bonne continuation, et espérons que le code soit mis à jour...
Vallorbain
Messages postés29Date d'inscriptionvendredi 18 juillet 2003StatutMembreDernière intervention 1 février 2019 13 avril 2007 à 17:40
- MultiThreading : juste pour eviter l'utilisation de DoEvents?
- Gestion des sous-dossiers pour le repertoire source : Pas nécessaire, eMule ou Kaza enregistre les fichiers dans un seul répertoire.
- Ne pas pouvoir changer le dossier de destination en cours de traitement. OK. btnSrc1.Enabled = false; etc...
- Fichier de config : Personellement je préfère la registry. Quelqu'un peut m'indiquer comment on peut enregistrer des données dans un fichier de config?
- Essaie 10 fois de copier le fichier de destination : But : Le fichier existe : ajoute un numéro au titre... sPathFile = sPathDir + "\" + sTitle + i.ToString() + sExt; On peut aussi tester l'existence du fichier...
- Pour Path, padRight et padLeft : Merci, j'étais passé à côté...
A+
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 13 avril 2007 à 13:53
Mouais..........
J'ajouterais à la liste de Mx (regardé rapidement aussi):
- Au secours !!!
// Essaie 10 fois de copier le fichier de destination
for(i=1; i<10; i++)
- Path.GetExtension
// Prélève l'extension du fichier
i = fi.Name.LastIndexOf('.');
String sExt = fi.Name.Substring(i).ToLower();
- Ouatch... padRight et padLeft
// Retaille les chaînes (peuvent être padées par 0 ou espace)
i = sTitle.IndexOf((char)0);
if (i !-1) sTitle sTitle.Substring(0, i);
i = sArtist.IndexOf((char)0);
if (i !-1) sArtist sArtist.Substring(0, i);
sTitle = sTitle.Trim();
sArtist = sArtist.Trim().ToLower();
Voilà, je m'arrête là, la liste serait encore longue....
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 13 avril 2007 à 13:32
Salut,
J'ai rapidement testé.
Voici, si je peux me permettre, les points qu'il faudrait améliorer :
- MultiThreading
- Gestion des sous-dossiers pour le repertoire source
- Ne pas pouvoir changer le dossier de destination en cours de traitement...
- D'un point de vue de l'utilisateur, je prefererais que les chemins des repertoires soient sauvé dans un fichier de config plutot que dans la base de registre
15 avril 2007 à 11:54
J'ai mis à jour entre temps, les remarques de Kleidp ne sont donc plus d'actualités.
Si je te donne ces classes comme références, c'est qu'il y a quelques similarité (lecture d'un fichier MP3) et que le code est mieux écrit.
Libre à toi de t'en inspirer.... ou pas.
15 avril 2007 à 10:51
Je suis très étonné que tu me site un tel code comme référence...
- Pas de GUI.
- Pas d'executable.
- Ouverture d'un fichier sans le refermer.
- Dérivation de code existant.
- Commentaire de Kleidp...
Plutôt que de dire "on peut faire encore pas mal d'améliorations", indique moi les améliorations que tu aimerais voir, cela sera plus constructif...
Le programme que je fournis est opérationnel.
14 avril 2007 à 18:04
Peut-être que le premier code que j'avais posté sur le site pourra te donner quelques pistes:
http://www.csharpfr.com/codes/ID3_26182.aspx
(Pour le padRight/padLeft, je me suis trompé de fonction, c'est Trim en fait)
14 avril 2007 à 16:38
- Multi-threading.
- Meilleur utilisation de Path.
- Suppresion de l'accès à la registry.
- Ajout d'un fichier de config.
Pour Bidou : L'utilisation de padRight et padLeft ne fait pas de sens dans le contexte. Lis mieux le code.
A+
13 avril 2007 à 19:55
Utiliser la registry est assez mauvais. Parfois (souvent?) on a pas les droits pour y lire/écrire, alors qu'on a toujours les droits pour écrire un fichier, ne serait-ce dans les documents du user (app data).
Pour le reste, tu peux revoir une bonne partie du code qui se simplifie énormément, ce que je t'ai donné plus haut c'est juste ceux que j'ai vu en lisant le code en diagonale mais y'en assurément beaucoup d'autre.
Bonne continuation, et espérons que le code soit mis à jour...
13 avril 2007 à 17:40
- Gestion des sous-dossiers pour le repertoire source : Pas nécessaire, eMule ou Kaza enregistre les fichiers dans un seul répertoire.
- Ne pas pouvoir changer le dossier de destination en cours de traitement. OK. btnSrc1.Enabled = false; etc...
- Fichier de config : Personellement je préfère la registry. Quelqu'un peut m'indiquer comment on peut enregistrer des données dans un fichier de config?
- Essaie 10 fois de copier le fichier de destination : But : Le fichier existe : ajoute un numéro au titre... sPathFile = sPathDir + "\" + sTitle + i.ToString() + sExt; On peut aussi tester l'existence du fichier...
- Pour Path, padRight et padLeft : Merci, j'étais passé à côté...
A+
13 avril 2007 à 13:53
J'ajouterais à la liste de Mx (regardé rapidement aussi):
- Au secours !!!
// Essaie 10 fois de copier le fichier de destination
for(i=1; i<10; i++)
- String.Format, Path.Combine
sPathFile = sPathDir + "\" + sTitle + i.ToString() + sExt;
- Path.GetExtension
// Prélève l'extension du fichier
i = fi.Name.LastIndexOf('.');
String sExt = fi.Name.Substring(i).ToLower();
- Ouatch... padRight et padLeft
// Retaille les chaînes (peuvent être padées par 0 ou espace)
i = sTitle.IndexOf((char)0);
if (i !-1) sTitle sTitle.Substring(0, i);
i = sArtist.IndexOf((char)0);
if (i !-1) sArtist sArtist.Substring(0, i);
sTitle = sTitle.Trim();
sArtist = sArtist.Trim().ToLower();
Voilà, je m'arrête là, la liste serait encore longue....
13 avril 2007 à 13:32
J'ai rapidement testé.
Voici, si je peux me permettre, les points qu'il faudrait améliorer :
- MultiThreading
- Gestion des sous-dossiers pour le repertoire source
- Ne pas pouvoir changer le dossier de destination en cours de traitement...
- D'un point de vue de l'utilisateur, je prefererais que les chemins des repertoires soient sauvé dans un fichier de config plutot que dans la base de registre
Bonne continuation :)