Tronqueur de nom de fichier (pour les baladeurs) [vc++ 6]

Soyez le premier à donner votre avis sur cette source.

Vue 5 235 fois - Téléchargée 308 fois

Description

Ce Programme sert a tronquer les noms de fichiers pour les baladeurs ou les maniaques du rangement qui supporte pas les noms longs. En effet, les baladeurs mp3 on un petit écran, et a chaque chanson on doit attendre de voir defiler le nom du groupe alors qu'on le connais parfaitement (;-).

Je met la source en niveau initié car les api et windows sont pas tjs tres simple, bien que j'ai fais l'effort d'expliquer dans des commentaires et tout, donc elle a bien un but pédagogique, je n'explique par contre pas les commandes car MSDN est super pour ça.

Source / Exemple :


//Je ne place ici que la fonction de recherche et de renommage des fichiers

//Recupere ce qui est dans le prefixe et y rajoute le *.*
				handle = GetDlgItem(hwnd,IDC_PREFIX);
				LenP=GetWindowTextLength(handle)+1;
				Prefixe=new char[LenP+1];
				GetWindowText(handle,Prefixe,LenP);
				
				Search=new char[LenP+3+1]; //= ce qui est contenu dans l'editbox + le \0 (ex: Nightwish-*\0)
				sprintf(Search,"%s*.*",Prefixe);
				
				//Recupere le Path du repertoire choisis et le selectionne
				handle = GetDlgItem(hwnd,IDC_EPATH);
				LenPath=GetWindowTextLength(handle)+1;
				Path=new char[LenPath+1];
				GetWindowText(handle,Path,LenPath);
				if(strcmp(Path,"")==0)
				{
					MessageBox(hwnd,"Vous devez selectionner un dossier avant de lancer le renommage !","Erreur",MB_ICONWARNING);
					return 0;
				}
				SetCurrentDirectory(Path);

				//Lance la Recherche
				HSearch=FindFirstFile(Search,&Info);
				if(HSearch!=INVALID_HANDLE_VALUE)
				{
					do
					{
						if(strcmp(Info.cFileName,".")!=0 && strcmp(Info.cFileName,"..")!=0) //Si c'est autre chose que ".." ou "."
						{
							NewName=new char[strlen(Info.cFileName)-LenP+1];
							
							//Recupere le nom de fichier sans le prefixe
							for(unsigned int i=0;i <= strlen(Info.cFileName)-LenP;i++)
							{
								NewName[i]=Info.cFileName[i+LenP-1];
							}
							NewName[strlen(Info.cFileName)-LenP+1]='\0';

							//Renomme
							if(rename(Info.cFileName,NewName)!=0)
							{
								ShowProg = new char[strlen(Info.cFileName)+113+1];
								sprintf(ShowProg,"Le Fichier %s n'a pus etre renommé !\nCette erreur est surrement dus au fait qu'un autre fichier porte le meme nom.",Info.cFileName);
								MessageBox(hwnd,ShowProg,"Erreur de Renommage",MB_ICONHAND);
								delete ShowProg;
							}

							NewName=new char[0]; //C'est le seul moyen que j'ai trouvé pour eviter le plantage.
							delete NewName; //en fait, delete aime pas que ma chaine se termine par \0, faites le test

							//Averti de ce qui se passe sur le label IDC_SPROGRESS
							ShowProg = new char[strlen(Info.cFileName)+30+1];
							sprintf(ShowProg,"Le fichier %s, a été renommé !!",Info.cFileName);

							handle = GetDlgItem(hwnd,IDC_SPROGRESS);
							SetWindowText(handle,ShowProg);
							delete ShowProg;
						}
					}while(FindNextFile(HSearch,&Info)!=NULL); //Et recommence tans qu'il y a des fichiers a rennomer
					
					//Dis que c'est FINI !
					handle = GetDlgItem(hwnd,IDC_SPROGRESS);
					SetWindowText(handle,"Tout les fichiers on bien été renommés !");
				}
				else
				{
					//Dis que c'est FINI !
					handle = GetDlgItem(hwnd,IDC_SPROGRESS);
					SetWindowText(handle,"Aucun fichiers n'a été renommés !");
				}

				delete Search;
				delete Path;
				delete Prefixe;

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
706
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
27 janvier 2009
4
salut,
tu utilises mal l'operateur delete : si tu fais qqc du genre : char* adresse = new char[50];
tu dois ensuite faire "delete [] adresse;" et non pas "delete adresse;"

"en fait, delete aime pas que ma chaine se termine par \0, faites le test" -> delete s'en fout, c'est toi qui l'utilise mal ;)
du coup ya des memory leaks dans ton code.
en cas de doute, poste une question dans le forum ...
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

Voila, j'attend vos commentaires bon ou mauvais et esperant avoir servi a quelqu'un a comprendre un peu plus les api Find File, BrowseInfo ou encore le win32

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.