delphi删除整个目录及目录下的文件

//删除整个文件夹及其下的所有文件

function DelDirAll(aDir: string): Boolean;

var

vSearch: TSearchRec;

vRet: integer;

vKey: string;

begin

if aDir[Length(aDir)] <> '\' then

aDir := aDir + '\';

vKey := aDir + '*.*';

vRet := FindFirst(vKey, faanyfile, vSearch);

while vRet = 0 do

begin

if ((vSearch.Attr and fadirectory) = fadirectory) then

begin

if (vSearch.Name <> '.') and (vSearch.name <> '..') then

DelDirAll(aDir + vSearch.name);

end

else

begin

if ((vSearch.Attr and fadirectory) <> fadirectory) then

begin

{System.Sysutils.}DeleteFile(aDir + vSearch.name);

end;

end;

vRet := FindNext(vSearch);

end; //while

{System.SysUtils.}FindClose(vSearch);

Removedir(aDir); // 如果需要删除文件夹则添加

result := True;

end;

///////////////////

var

p: integer;

p1, p2: pchar;

IconIndex: word; // Position of the icon in the file

FileName: TFilename;

begin

IconIndex := 0;

FileName:='D:\yang\projects\罗为\福州日报外网发布工具\数据发布和备份工具\Win32\Debug\数据发布和备份工具.exe,1';

p1 := PChar(FileName);

p2 := StrRScan(p1, ','); //从字符串最左侧开始查找单个字符

if p2 <> nil then begin

p := p2 - p1 + 1; // Position of the comma

try

IconIndex := StrToInt(Copy(FileName, p + 1, Length(FileName) - p));

showmessage(inttostr(IconIndex));

except

on e:EConvertError do

begin

showmessage(e.Message);

end;

end;

SetLength(FileName, p - 1);

end;

end;