对指定的文件夹遍历,结果放到LISTBOX: function ListDirs(Path: string; List: TStringList): Integer; var FindData: TWin32FindData; FindHandle: THandle; FileName: string; AddToList: Boolean; begin Result := 0; AddToList := Assigned(List); if Path[Length(Path)] <> '\' then Path := Path + '\'; Path := Path + '*.*'; FindHandle := Windows.FindFirstFile(PChar(Path), FindData); while FindHandle <> INVALID_HANDLE_VALUE do begin FileName := StrPas(FindData.cFileName); if (FileName <> '.') and (FileName <> '..') and ((FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0) then begin Inc(Result); if AddToList then List.Add(FileName); end; if not Windows.FindNextFile(FindHandle, FindData) then FindHandle := INVALID_HANDLE_VALUE; end; Windows.FindClose(FindHandle); end;使用: var s: TStringList; begin s := TStringList.Create; ListDirs('c:\windows\', s); ListBox1.Items.AddStrings(s); s.Free; end;
使用shfileoperation函数删除文件夹:uses shellapi;{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);Var T:TSHFileOpStruct; P:String; begin P:='d:\address'; With T do Begin Wnd:=0; wFunc:=FO_DELETE; pFrom:=Pchar(P); pTo:=nil; fFlags:=FOF_ALLOWUNDO+FOF_NOCONFIRMATION+FOF_NOERRORUI;//标志表明允许恢复,无须确认并不显示出错信息 hNameMappings:=nil; lpszProgressTitle:='正在删除文件夹'; fAnyOperationsAborted:=False; End; SHFileOperation(T); end;
function ListDirs(Path: string; List: TStringList): Integer;
var
FindData: TWin32FindData;
FindHandle: THandle;
FileName: string;
AddToList: Boolean;
begin
Result := 0;
AddToList := Assigned(List); if Path[Length(Path)] <> '\' then
Path := Path + '\'; Path := Path + '*.*'; FindHandle := Windows.FindFirstFile(PChar(Path), FindData);
while FindHandle <> INVALID_HANDLE_VALUE do
begin
FileName := StrPas(FindData.cFileName);
if (FileName <> '.') and (FileName <> '..') and
((FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0) then
begin
Inc(Result);
if AddToList then
List.Add(FileName);
end; if not Windows.FindNextFile(FindHandle, FindData) then
FindHandle := INVALID_HANDLE_VALUE;
end;
Windows.FindClose(FindHandle);
end;使用:
var
s: TStringList;
begin
s := TStringList.Create;
ListDirs('c:\windows\', s);
ListBox1.Items.AddStrings(s);
s.Free;
end;
T:TSHFileOpStruct;
P:String;
begin
P:='d:\address';
With T do
Begin
Wnd:=0;
wFunc:=FO_DELETE;
pFrom:=Pchar(P);
pTo:=nil;
fFlags:=FOF_ALLOWUNDO+FOF_NOCONFIRMATION+FOF_NOERRORUI;//标志表明允许恢复,无须确认并不显示出错信息 hNameMappings:=nil;
lpszProgressTitle:='正在删除文件夹';
fAnyOperationsAborted:=False;
End;
SHFileOperation(T);
end;