function right_str(ss: string; n: integer): string;var v_s: string; i: integer; cnt: integer;begin v_s := ''; cnt := length(ss); //cnt:=3; if n > length(ss) then //1>3; begin result := ss; exit; end; for i := 1 to n do v_s := v_s + ss[cnt - n + i]; result := v_s;end;function MakeFileList(Path,FileExt:string):TStringList ;var sch:TSearchrec;beginResult:=TStringlist.Create;if right_str(trim(Path), 1) <> '/' then Path := trim(Path) + '/'else Path := trim(Path);if not DirectoryExists(Path) thenbegin Result.Clear; exit;end;if FindFirst(Path + '*', faAnyfile, sch) = 0 thenbegin repeat Application.ProcessMessages; if ((sch.Name = '.') or (sch.Name = '..')) then Continue; if DirectoryExists(Path+sch.Name) then begin Result.AddStrings(MakeFileList(Path+sch.Name,FileExt)); end else begin if (UpperCase(extractfileext(Path+sch.Name)) = UpperCase(FileExt)) or (FileExt='.*') then Result.Add(Path+sch.Name); end; until FindNext(sch) <> 0; SysUtils.FindClose(sch);end;end;{引用var Str:TStringList;begin Str:=TStringList.Create; Str:=MakeFileList(delphi_out','.exe'); ShowMessage(Str.Text);end;}