/// <remarks>
/// 遍历文件夹 (引用SysUtils单元)
/// </remarks>
procedure TfrmMusicMenu.SearchInDir(sDirectory: string);
var
pSearchRec: TSearchRec; // TSearchRec是delphi为我们定义好的一个记录类型。
              // 用于记录文件的各个参数,比如大小,属性,文件名等等;
sPath, sFile: string;
begin
try
// 检查目录名后面是否有'\'
if Copy(sDirectory, Length(sDirectory), ) <> '\' then
sPath := sDirectory + '\'
else
sPath := sDirectory; {FindFirst 是用来寻找目标目录下的第一个文件,当成功找到文件时,返回0
FindFirst的三个参数:1.路径与文件后缀(C:\*.*)
              2.文件类型;
              3.TSearchRec类型变量(用于储存文件的参数)}
if FindFirst(sPath + '*.*', faAnyFile, pSearchRec) = then
begin
repeat
sFile := Trim(pSearchRec.Name); // 排除自身文件夹,与父文件夹
if sFile = '.' then Continue;
if sFile = '..' then Continue; sFile := sPath + pSearchRec.Name; // 文件夹的情况(递归)
if(pSearchRec.Attr and faDirectory) <> then
SearchInDir(sFile)
else // 文件的情况
if(pSearchRec.Attr and faAnyFile) = pSearchRec.Attr then
begin
if Pos('.MP3', UpperCase(sFile)) < then Continue; if FSelFileList = '' then
FSelFileList := sFile
else
FSelFileList := FSelFileList + ',' + sFile;
end; {FindNext 寻找下一个
TSearchRec(sr) 是一个文件信息的纪录,
当FindFirst返回SearchRec时,你可以通过SearchRec.Name获取文件名,
以及 SearchRec.Size获取文件大小等信息}
until FindNext(pSearchRec) <> ; {FindClose 释放由FindFirst分配的内存。FindClose停止一个FindFirst/FindNext序列。
FindClose 在16位的操作系统中没有用处,但在32位系统中是需要的,
所以为了最大的FindFirst/FindNext序列完成的可能性应该调用FindClose结束。}
FindClose(pSearchRec);
if FSelFileList = '' then
InfoDlg('NND!这个文件夹有你妹的 Music 啊...');
end;
except
InfoDlg('NND!找个Music都TMD异常...');
end;
end;

Delphi遍历文件夹的更多相关文章

  1. Delphi遍历文件夹及子文件夹(可查找固定格式文件)

    Delphi遍历文件夹及子文件夹 {-------------------------------------------------------------------------------过程名 ...

  2. Delphi下遍历文件夹下所有文件的递归算法

    {------------------------------------------------------------------------------- 过程名:    MakeFileLis ...

  3. C#遍历文件夹下所有文件

    FolderForm.cs的代码如下: using System; using System.Collections.Generic; using System.Diagnostics; using ...

  4. windowsAPI遍历文件夹(速度高于递归)

    #region API 遍历文件夹及其子文件夹和子文件 #region 声明WIN32API函数以及结构 ************************************** [DllImpo ...

  5. C# 遍历文件夹下所有子文件夹中的文件,得到文件名

    假设a文件夹在F盘下,代码如下.将文件名输出到一个ListBox中using System.Data;using System.Drawing;using System.Linq;using Syst ...

  6. python 遍历文件夹 文件

    python 遍历文件夹 文件   import os import os.path rootdir = "d:\data" # 指明被遍历的文件夹 for parent,dirn ...

  7. C#遍历文件夹及文件

    背景: 想自己实现一个网盘系统,于是需要用到遍历文件(夹)操作. C#基本知识梳理: 1.如何获取指定目录包含的文件和子目录 (1). DirectoryInfo.GetFiles():获取目录中(不 ...

  8. Java学习随笔3:遍历文件夹及文件的读取和写入

    import java.io.File; /** * 遍历文件夹 */ public class ScannerFile { public static void main(String[] args ...

  9. java 遍历文件夹里的文件

    Java遍历文件夹的2种方法: A.不使用递归: import java.io.File; import java.util.LinkedList; public class FileSystem { ...

随机推荐

  1. Upgrading to Java 8——第三章 Optional and Similar Classes

    Java程序员对付空指针异常已经好多年了.在Java8中将有新的方式去处理他们.通过包装一个潜在的可能为null的类称为Optianal. 在Java8中添加了the Optional, Option ...

  2. 虚拟目录里面的webconfig不继承网站的设置

    必須在上一层虚拟目录(如根目录,上级网站)所在的Web.config加上 如:<location path="." allowOverride="false&quo ...

  3. MySQL 5.7 虚拟列 (virtual columns)

    参考资料: Generated Columns in MySQL 5.7.5 MySQL 5.7新特性之Generated Column(函数索引) MySQL 5.7原生JSON格式支持 Gener ...

  4. AD转换后数字量的处理

    假设模拟输入电压的最大值为5V,A/D转换器件为8位转换. [该转换器的分辨率为1/2n=0.3906%.] [能分辨输入模拟电压变化的最小值为5*0.3906%=19.5mv.] 则模拟电压与数字输 ...

  5. RMQ(st)

    int dp[1111][12]; int a[1111]; int n; void RMQ_init() {     for(int i=1;i<=n;i++)     {         d ...

  6. Codis集群的搭建与使用

    一.简介 Codis是一个分布式的Redis解决方案,对于上层的应用来说,连接Codis Proxy和连接原生的Redis Server没有明显的区别(不支持的命令列表),上层应用可以像使用单机的Re ...

  7. ab压力测试工具-批量压测脚本

    ab(Apache benchmark)是一款常用的压力测试工具.简单易用,ab的命令行一次只能支持一次测试.如果想要批量执行不同的测试方式,并自动对指标进行分析,那么单靠手工一条一条命令运行ab,估 ...

  8. HDU 1247 Hat’s Words(map,STL,字符处理,string运用)

    题目 用map写超便捷 也可以用字典树来写 我以前是用map的: #include<stdio.h> #include<string.h> #include<algori ...

  9. 行列有序矩阵求第k大元素

    问题来源:http://www.careercup.com/question?id=6335704 问题描述: Given a N*N Matrix. All rows are sorted, and ...

  10. PHP SESSION 保存到数据库

    PHP SESSION 的工作原理 在客户端(如浏览器)登录网站时,被访问的 PHP 页面可以使用 session_start() 打开 SESSION,这样就会产生客户端的唯一标识 SESSION ...