获得文件夹的函数:
procedure SearchDir(WatchSubTree:Boolean;MainPath:String;SubTree:Boolean);
var i:Integer;
Found:Boolean;
SubDir:TSTringList;
SearchRec:TsearchRec;
begin
if DirectList=nil then DirectList:=TStringList.Create;
if not SubTree then DirectList.Clear;
SubDir:=TStringList.Create;
if DirectoryExists(MainPath) then begin
//第一次遍历时加上本目录
if DirectList.Count=0 then DirectList.Add(MainPath);
//找出所有下级子目录
if (FindFirst(mainpath+'/*.*', faDirectory, SearchRec)=0) then begin
if IsValidDir(SearchRec) then begin
SubDir.Add(SearchRec.Name);
DirectList.Add(MainPath+'/'+SearchRec.Name);
end;
while (FindNext(SearchRec) = 0) do begin
if IsValidDir(SearchRec) then begin
SubDir.Add(SearchRec.Name);
DirectList.Add(MainPath+'/'+SearchRec.Name);
end;
end;
end;
end;
if WatchSubTree then begin
//递归:查找各子目录
for i:=0 to SubDir.Count-1 do
SearchDir(True,mainpath+'/'+SubDir.Strings+'/',True);
end;
end;
function IsValidDir(SearchRec:TSearchRec):Boolean;
begin
if (SearchRec.Attr=16) and
(SearchRec.Name<>'.') and
(SearchRec.Name<>'..') then
Result:=True
else Result:=False;
end;
打开文件夹的函数:
shellexecute(application.handle, nil, pchar('D:/'), nil, nil, SW_SHOWNORMAL );