Netuším akú verziu Delphi máš..., ale od DELPHI XE2 pribudla trieda TDictionary...
príklad:
unit Unit5;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Generics.Collections;
type
TForm5 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
IPList : TDictionary<string, string>;
procedure AddItemToList(nazov, pripona: String);
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
{$R *.dfm}
procedure TForm5.AddItemToList(nazov, pripona: String);
var
S: String;
begin
if IPList.TryGetValue(nazov, S) then
begin
if StrToInt(pripona) > StrToInt(S) then
begin
IPList.Remove(nazov);
IPList.Add(nazov, pripona);
end;
end else
IPList.Add(nazov, pripona);
end;
procedure TForm5.Button1Click(Sender: TObject);
var
Key: String;
begin
// vypísať zoznam súborov s príponou
for Key in IPList.Keys do
ListBox1.Items.Add(Key+'.'+IPList.Items[Key]);
//prípadne si prechádzaj zoznam a použi CopyFile...
end;
procedure TForm5.FormCreate(Sender: TObject);
var
searchResult : TSearchRec;
begin
// vytvoriť inštanciu TDictionary
IPList := TDictionary<string, string>.Create;
// načítavať názvy súborov + príponu a pridávať do zoznamu
if FindFirst('*.*', faAnyFile, searchResult) = 0 then
begin
repeat
with searchresult do
AddItemToList(ChangeFileExt(ExtractFileName(Name), ''), ExtractFileExt(name));
until FindNext(searchResult) <> 0;
FindClose(searchResult);
end;
end;
procedure TForm5.FormDestroy(Sender: TObject);
begin
// uvoľniť inštanciu dictionary
IPList.Free;
end;
end.