在某个路径中(例如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
这是更快的方法吗?
答案 0 :(得分:0)
简单回答NO,因为据我所知,在Windows中你没有低级API,允许你根据指定的排序标准获得第一个文件。