delphi如何获取文件夹内的MP3文件数量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi如何获取文件夹内的MP3文件数量相关的知识,希望对你有一定的参考价值。

麻烦给写个函数
比如d:\mymp3f文件夹中的文件数量

用控件啊 filelistbox
把它的mask属性设置成 *.mp3
然后把d:\ 里的文件全部导入到filelistbox里。这样就只能显示mp3格式的文件
最后用 filelistbox.items.count 得到数量
参考技术A type
// 找到一个文件后的回调函数,返回True则继续找,返回False就停止
TOnGotName = function( sName : string; bIsDir : Boolean ) : Boolean;

var
nFileCount : Integer = 0;
nDirCount : Integer = 0;

function MyOnGot( sName : string; bIsDir : Boolean ) : Boolean;
begin
// 找到后干点儿啥...以下简单统计目录数和文件数是个最简单的示例
if bIsDir then
Inc( nDirCount )
else
Inc( nFileCount );
Result := True;
end;

procedure GetCount_CaredFiles(
const sPath : string;
const sExtName : string;
var nResult : Integer;
bIncludeSubDir : Boolean = True;
const fnOnGot : TOnGotName = nil
);
内嵌函数:是否当前目录或者上级目录
function IsCurrentOrAboveDir( rFD : TWin32FindData ) : Boolean;
begin
Result := False;
with rFD do
case StrLen( cFileName ) of
1: Result := cFileName[0] = '.';
2: Result := ( cFileName[0] = '.' ) and ( cFileName[1] = '.' );
end;
end;
var
H : THandle;
R : TWin32FindData;
S : string;
begin
S := Format( '%s\*.*', [ ExpandFileName( sPath ) ] );
H := Windows.FindFirstFile( PChar( S ), R );
if H <> INVALID_HANDLE_VALUE then
begin
repeat
S := Format( '%s\%s', [ sPath, R.cFileName ] );
if R.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <> 0 then
begin
// 无需处理当前子目录或上级目录(./..),直接下一轮循环
if IsCurrentOrAboveDir( R ) then
Continue;
if Assigned( fnOnGot ) then
if not fnOnGot( S, True ) then
Break;
if bIncludeSubDir then
GetCount_CaredFiles( S, sExtName, nResult, True );
end
else
begin
if SameText( ExtractFileExt( S ), sExtName ) then
Inc( nResult );
if Assigned( fnOnGot ) then
if not fnOnGot( S, False ) then
Break;
end;
until not Windows.FindNextFile( H, R );
Windows.FindClose( H );
end;
end;

调用方法:
var
nCountMP3 : Integer;

nCountMP3 := 0;
// 只在指定目录中找,不找子目录下的
GetCount_CaredFiles( 'D:\MyMP3F', '.mp3', nCountMP3, False );
// 在指定目录及其子目录中递归查找
GetCount_CaredFiles( 'D:\MyMP3F', '.mp3', nCountMP3 );
// 不但查找,找到后还想干点儿啥
GetCount_CaredFiles( 'D:\MyMP3F', '.mp3', nCountMP3, True, MyOnGot );本回答被提问者和网友采纳

以上是关于delphi如何获取文件夹内的MP3文件数量的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 MP3 文件的比特率? (德尔福)

Delphi:如何创建具有特定秒数的静音 MP3 文件?

如何获取音频文件的准确时长,比如MP3

如何在 Delphi 中播放资源中的 mp3 内容?

如何更改 mp3 比特率? (德尔福)

MP3/wav 音频文件的持续时间