J'ai récemment commencé avec Delphi et maintenant je veux obtenir tous les fichiers mp3 à partir d'un répertoire. Je veux quelque chose comme la fonction php glob().Comment trouver tous les fichiers MP3 dans un répertoire?
Répondre
L'ancienne façon de le faire est d'environ:
var
status : dword;
sr : TSearchRec;
begin
status := FindFirst('*.mp3',faAnyFile,sr);
while status = 0 do
begin
// sr.Name is the filename; add it to a list
// or something. Note there is no path so you
// may need to add that back on somewhere
status := FindNext(sr);
end;
SysUtils.FindClose(sr);
// ...
end;
Fonctionne bien, sauf si la condition doit être 'status = 0'. – AntonLosev
Essayez IOUtils.TDirectory.
Ce type n'existe pas dans Delphi 6. –
Ensuite, utilisez FindFirst etc. comme suggéré par Bill99 - C'est ainsi que TDirectory est implémenté. –
Si les bibliothèques supplémentaires sont ok pour vous, jetez un oeil au Code Jedi Library.
Dans l'unité commune \ JclFileUtils, il y a une fonction d'assistance compacte:
function BuildFileList(const Path: string;
const Attr: Integer; const List: TStrings;
IncludeDirectoryName: Boolean = False): Boolean;
Le JCL est bien entretenu et comprend de grandes extensions et des améliorations IDE. Le (très facile à utiliser) installateur JCL est disponible à http://sourceforge.net/projects/jcl/
un composant libre très agréable est TFindFile à Delphes Zone: http://www.delphiarea.com/products/delphi-components/findfile/
il vous donnera un contrôle total sur la recherche de fichiers/dossiers, filetés ou non
L'ancien TFileListBox dans l'unité Delphi FileCtrl est une bonne solution.
Il a été là depuis Delphi 1, et à propos de Delphi has a nice example on how to use it.
Vous pouvez le déposer sur un formulaire, définir Visible = False
, et ne jamais s'inquiéter à ce sujet.
Il prend en charge le filtrage (par exemple sur l'extension), donc il fonctionnera très bien avec votre critère * .mp3.
--jeroen
Si vous avez récemment commencé avec Delphi, pourquoi êtes-vous sur Delphi 6? –
@Mason - D'accord! Ce n'est pas comme Harry Potter, tu n'as pas à recommencer depuis le début! –
@Mason Wheeler: parce qu'il en avait une copie et ne voulait pas dépenser 900 euros pour chercher des mp3? –