2013-06-24 2 views
0

Comment charger des fichiers .mp3 en liste seule à l'aide d'un opendialog non filtré et multisélection? J'utilise cette méthode:Delphi XE2 - Comment ouvrir uniquement les fichiers .mp3 avec un Opendialog Multiselect et non filtré

procedure TForm1.PlayClick(Sender: TObject); 
    var i:integer; 
    begin 
    if opendialog1.execute then 
    begin 
    if ExtractFileExt(opendialog1.FileName[i]) ='.mp3' then 
    begin 
    for I := 0 to opendialog1.files.Count - 1 do 
    begin 
    listview1.Items.Add.Caption:=extractfilename(opendialog1.Files[i]); 
    end; 
    end; 
    end else 
    begin 
showmessage(opendialog1.Files[i]); 
    end; 
    end; 

Mais je besoin d'une procédure qui fonctionne comme ceci:

Si l'utilisateur ouvre un dossier avec différents types d'extensions, le openDialog ne font qu'ajouter aux fichiers ListView .mp3 extension. J'ai besoin d'une procédure qui n'utilise pas de filtre. Merci!

Répondre

9

Vous avez rencontré plusieurs problèmes dans votre code. la variable i n'est pas initialisée, vous devez vérifier l'extension à l'intérieur de la boucle for, Vous vérifiez également l'extension du fichier en utilisant la propriété FileName[i] qui obtient le fichier sélectionné en cours (uniquement valide en mode non multi-sélection), donc vous comparez un élément (char) de cette propriété avec le .mp3 à la place, vous devez utiliser la propriété Files.

Essayez cette

var 
    i:integer; 
    LItem : TListItem; 
begin 
    if opendialog1.execute then 
    for i := 0 to OpenDialog1.Files.Count - 1 do 
    if SameText(ExtractFileExt(opendialog1.Files[i]), '.mp3') then 
    begin 
     LItem:=listview1.Items.Add; 
     LItem.Caption:=ExtractFileName(OpenDialog1.Files[i]); 
    end; 
end; 
+0

Merci RRUZ beaucoup. –