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

麻烦给写个函数比如d:\mymp3f文件夹中的文件数量... 麻烦给写个函数
比如d:\mymp3f文件夹中的文件数量
展开
 我来答
宝贝越儿乖
2010-12-08 · 超过22用户采纳过TA的回答
知道答主
回答量:103
采纳率:0%
帮助的人:67.7万
展开全部
用控件啊 filelistbox
把它的mask属性设置成 *.mp3
然后把d:\ 里的文件全部导入到filelistbox里。这样就只能显示mp3格式的文件
最后用 filelistbox.items.count 得到数量
己闻楣Sx
2010-11-25 · TA获得超过1935个赞
知道大有可为答主
回答量:1057
采纳率:93%
帮助的人:910万
展开全部
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 );
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式