Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Kopírování adresáře s vybranými soubory - Delphi

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.

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny