Delphi XE2 - 如何使用Multiselect和Unfiltered Opendialog打开.mp3文件

V.S*_*les 0 delphi delphi-xe2

如何使用未过滤和多选择的opendialog加载到listview只有.mp3文件?我正在使用这种方法:

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;
Run Code Online (Sandbox Code Playgroud)

但是我需要一个像这样工作的程序:

如果用户打开具有各种扩展名的文件夹,则opendialog仅添加到扩展名为.mp3的ListView文件.我需要一个不使用过滤器的过程.谢谢!

RRU*_*RUZ 9

您的代码中有几个问题.如果i变量未初始化,则必须检查for循环内部的扩展名,还要使用FileName[i]获取当前所选文件的属性检查文件的扩展名(仅在非多选模式下有效),所以你是比较此属性的元素(char).mp3而不是必须使用该 Files属性.

试试这个

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;
Run Code Online (Sandbox Code Playgroud)