各位高手,比如说我有一个文件夹c:\aa\
里面有三个文件:0001.aaa , 0002,aaa , 0003,aaa
我现在用
if findFirst(c:\aa\*.aaa,faArchive,searchRec)=0 then
repeat
........
until findNext(searchRec)<>0这样操作是为了分别对文件操作!
可是我发现FINDFIRST查文件不是按照0001,0002,0003的文件名前缀的顺序来的,
我要求要按照前缀的顺序查找,怎么办?如果FINDFIRST没有此功能,有没有别的方法?急!谢谢……
里面有三个文件:0001.aaa , 0002,aaa , 0003,aaa
我现在用
if findFirst(c:\aa\*.aaa,faArchive,searchRec)=0 then
repeat
........
until findNext(searchRec)<>0这样操作是为了分别对文件操作!
可是我发现FINDFIRST查文件不是按照0001,0002,0003的文件名前缀的顺序来的,
我要求要按照前缀的顺序查找,怎么办?如果FINDFIRST没有此功能,有没有别的方法?急!谢谢……
var
i:integer;
s:string;
begin
for i:=0 to 9999 do
begin
if i<10 then s:='000'+intTostr(i)
else if i<100 then s:='00'+intToStr(i)
else if i<1000 then s:='0'+intTostr(i)
else s:=intToStr(i); if fileExists('c:\aaa\'+s+'.aaa') then
begin
//here your codes
//showMessage('c:\aaa\'+s+'.aaa')
end; end;
end;
文件名全部存起来,然后数组排序,让我先试试看
然后再按照你的规则从TStringList里面找,不就行了
要是00a,00b,00b 难道还在改程序吗?
var sr:TSearchRec;
Err:integer;
s:TStringList;
i,j:Smallint;
TempStr:string;
begin
s:=TStringList.Create;//查找文件
Err:=FindFirst('f:\use\yyx\'+'*.*',$37,sr);
while Err=0 do
begin
if (sr.Name[1]<>'.') and (sr.Attr and faDirectory>0) then
s.Add(sr.Name);
Err:=FindNext(sr);
end;//排序 最简单的选择排序 你可以用其他排序方法
for i:=0 to s.Count-2 do
for j:=i+1 to s.Count-1 do
begin
if s.Strings[i]>s.Strings[j] then
begin
TempStr:=s.Strings[i];
s.Strings[i]:=s.Strings[j];
s.Strings[j]:=TempStr;
end;
end;Memo1.Lines:=s;s.Free
end;
Delphi的快速排序可比选择排序快多了
====================================快速排序也不一定比“选择排序”快啊。在某些情况下,快速排序速度还不一定快的过其他的排序