Delphi:获取特定路径中的最大整数目录名称

时间:2015-10-30 14:16:54

标签: delphi winapi

在某个路径中(例如C:\foo\bar\),我有一个未定义的目录,用整数命名,例如:

C:\foo\bar\0\
C:\foo\bar\1\
C:\foo\bar\2\
C:\foo\bar\9\
C:\foo\bar\10\
C:\foo\bar\100\

我会得到C:\foo\bar\路径中命名的最大整数目录,在这种情况下是100.

我的代码有效,但速度很慢:

function GetMaxDir(const APath : String) : integer;
var
   LList    : TStringDynArray;
   I        : Integer;
   EndFor   : Integer;
   CurrDir  : string;
   CurrVer  : Integer;
begin
   Result := -1;

   if not DirectoryExists(APath) then Exit;

   LList   := TDirectory.GetDirectories(APath);
   EndFor  := Length(LList) - 1;
   CurrVer := 0;

   for I := 0 to EndFor do begin
      CurrVer := 0;
      CurrDir := ExtractFileName(LList[I]); // return path leaf (the integer)

      TryStrToInt(CurrDir, CurrVer);

      if CurrVer > Result then Result := CurrVer;
   end;
end;

用法,例如:

var
  aMaxDir : integer;
begin
  aMaxDir := GetMaxDir('C:\foo\bar\'); // return 100

这是更快的方法吗?

1 个答案:

答案 0 :(得分:0)

简单回答NO,因为据我所知,在Windows中你没有低级API,允许你根据指定的排序标准获得第一个文件。