如在某目录里存在下列Pro/Engineer图档
body_bottom.prt.1
body_bottom.prt.2
body_bottom.prt.5
body_bottom.prt.11
body_bottom.prt.15
body_bottom.prt.20
body_bottom.prt.21
body_bottom.prt.22
body_bottom.prt.23
body_bottom.prt.24
body_bottom.prt.30
body_master.prt.1
body_master.prt.2
body_master.prt.3
body_master.prt.4
body_master.prt.5
body_master.prt.6
body_master.prt.7
body_master.prt.8
body_subassem.asm.1
body_subassem.asm.2
body_subassem.asm.3
body_subassem.asm.4
body_subassem.asm.5
body_subassem.asm.6
body_subassem.asm.50
body_top.prt.1
body_top.prt.2
body_top.prt.3
body_top.prt.4
body_top.prt.5
body_top_frame.prt.1
cover_bottom.prt.1
cover_bottom_frame.prt.1
cover_subassem.asm.1
cover_top.prt.1
key_frame.prt.1
l668-lable.prt.1
prt0001.prt.1
prt0002.prt.1
side_key.prt.1
side_key.prt.2
side_key.prt.3
side_key.prt.4
side_key.prt.5
side_key_assem.asm.1
side_key_assem.asm.2
side_key_assem.asm.3
side_rubber_key.prt.1
side_rubber_key.prt.2
side_rubber_key.prt.3
tcl-l668_main_assem.asm.1
tcl-l668_main_assem.asm.2
tcl-l668_main_assem.asm.3
提示:所有文件后缀中的数字是该类文件的版本文件,
同一文件名中后缀数字最大的是最新版本.
想要的功能是:
要很快的将低版本文件过滤掉,即同文件名中只保留最大后缀名的文件!
body_bottom.prt.1
body_bottom.prt.2
body_bottom.prt.5
body_bottom.prt.11
body_bottom.prt.15
body_bottom.prt.20
body_bottom.prt.21
body_bottom.prt.22
body_bottom.prt.23
body_bottom.prt.24
body_bottom.prt.30
body_master.prt.1
body_master.prt.2
body_master.prt.3
body_master.prt.4
body_master.prt.5
body_master.prt.6
body_master.prt.7
body_master.prt.8
body_subassem.asm.1
body_subassem.asm.2
body_subassem.asm.3
body_subassem.asm.4
body_subassem.asm.5
body_subassem.asm.6
body_subassem.asm.50
body_top.prt.1
body_top.prt.2
body_top.prt.3
body_top.prt.4
body_top.prt.5
body_top_frame.prt.1
cover_bottom.prt.1
cover_bottom_frame.prt.1
cover_subassem.asm.1
cover_top.prt.1
key_frame.prt.1
l668-lable.prt.1
prt0001.prt.1
prt0002.prt.1
side_key.prt.1
side_key.prt.2
side_key.prt.3
side_key.prt.4
side_key.prt.5
side_key_assem.asm.1
side_key_assem.asm.2
side_key_assem.asm.3
side_rubber_key.prt.1
side_rubber_key.prt.2
side_rubber_key.prt.3
tcl-l668_main_assem.asm.1
tcl-l668_main_assem.asm.2
tcl-l668_main_assem.asm.3
提示:所有文件后缀中的数字是该类文件的版本文件,
同一文件名中后缀数字最大的是最新版本.
想要的功能是:
要很快的将低版本文件过滤掉,即同文件名中只保留最大后缀名的文件!
解决方案 »
- 求问一个api函数
- 大虾们请问delphi 中如何自定义控件?
- 想用udp做一个通信软件,应该考虑什么?
- Access中的自动编号在Delphi中Ttable中的TDBGrid中怎么用
- 如何在Delphi5中实现WebService????????
- SelectDirectory函数问题。
- 对不起,可是有人能告诉我几个绿色的三角是什么意思?几个桔红色的星星又是什么?(我不给分,行吗?),多谢了!
- **************请推荐一下Delphi的经典好书**************
- 关于类的问题,请进!!
- Delphi BORdbk60.DLL 错误如何解决
- 大家在公司电脑里,都用什么软件,或方法,保存自己的私人资料啊?
- 有关Delphi使用的问题。
var
iPos, iPos2: Integer;
begin
Result := False;
iPos := PosEx('.', S1);
if Copy(S1, 1, iPos) <> Copy(S2, 1, iPos) then Exit;
iPos2 := PosEx('.', S1, iPos + 1);
if Copy(S1, 1, iPos2) <> Copy(S2, 1, iPos2) then Exit;
Result := True;
end; function IsBigger(const S1, S2: string): Boolean;
var
iPos, iPos2: Integer;
begin
iPos := PosEx('.', S1);
iPos2 := PosEx('.', S1, iPos + 1);
Result := StrToInt(Copy(S1, iPos2 + 1, MaxInt)) > StrToInt(Copy(S2, iPos2 + 1, MaxInt));
end;var
I: Integer;
g_SL, g_Res: TStringList;
begin
g_Res := TStringList.Create;
g_SL := TStringList.Create;
//////////
g_SL.Add('body_bottom.prt.1');
g_SL.Add('body_bottom.prt.2');
g_SL.Add('body_bottom.prt.5');
g_SL.Add('body_bottom.prt.11');
g_SL.Add('body_bottom.prt.15');
g_SL.Add('body_bottom.prt.20');
g_SL.Add('body_bottom.prt.21');
g_SL.Add('body_bottom.prt.22');
g_SL.Add('body_bottom.prt.23');
g_SL.Add('body_bottom.prt.24');
g_SL.Add('body_bottom.prt.30');
g_SL.Add('body_master.prt.1');
g_SL.Add('body_master.prt.2');
g_SL.Add('body_master.prt.3');
g_SL.Add('body_master.prt.4');
g_SL.Add('body_master.prt.5');
g_SL.Add('body_master.prt.6');
g_SL.Add('body_master.prt.7');
g_SL.Add('body_master.prt.8');
g_SL.Add('body_subassem.asm.1');
g_SL.Add('body_subassem.asm.2');
g_SL.Add('body_subassem.asm.3');
g_SL.Add('body_subassem.asm.4');
g_SL.Add('body_subassem.asm.5');
g_SL.Add('body_subassem.asm.6');
g_SL.Add('body_subassem.asm.50');
g_SL.Add('body_top.prt.1');
g_SL.Add('body_top.prt.2');
g_SL.Add('body_top.prt.3');
g_SL.Add('body_top.prt.4');
g_SL.Add('body_top.prt.5');
g_SL.Add('body_top_frame.prt.1');
g_SL.Add('cover_bottom.prt.1');
g_SL.Add('cover_bottom_frame.prt.1');
g_SL.Add('cover_subassem.asm.1');
g_SL.Add('cover_top.prt.1');
g_SL.Add('key_frame.prt.1');
g_SL.Add('l668-lable.prt.1');
g_SL.Add('prt0001.prt.1');
g_SL.Add('prt0002.prt.1');
g_SL.Add('side_key.prt.1');
g_SL.Add('side_key.prt.2');
g_SL.Add('side_key.prt.3');
g_SL.Add('side_key.prt.4');
g_SL.Add('side_key.prt.5');
g_SL.Add('side_key_assem.asm.1');
g_SL.Add('side_key_assem.asm.2');
g_SL.Add('side_key_assem.asm.3');
g_SL.Add('side_rubber_key.prt.1');
g_SL.Add('side_rubber_key.prt.2');
g_SL.Add('side_rubber_key.prt.3');
g_SL.Add('tcl-l668_main_assem.asm.1');
g_SL.Add('tcl-l668_main_assem.asm.2');
g_SL.Add('tcl-l668_main_assem.asm.3');
//////////
g_SL.Sort;
g_Res.Add(g_SL[0]);
for I := 1 to g_SL.Count - 1 do
begin
if IsSameName(g_Res[g_Res.Count - 1], g_SL[I]) then
begin
if IsBigger(g_SL[I], g_Res[g_Res.Count -1]) then
begin
g_Res[g_Res.Count -1] := g_SL[I];
end;
end else
begin
g_Res.Add(g_SL[I]);
end;
end;
ShowMessage(g_Res.Text);
g_SL.Free;
g_Res.Free;
end;
谢谢你的帮助,这正是我想得到的结果!!!