Como copiar apenas um arquivo para vários diretórios listados na Listbox1
10/07/2018
0
aqui vai um pequeno trecho:
var
destino: string;
origem: string;
i: integer;
begin
origem := Edit1.text; // caminho do arquivo
if opendialigo1.execute then
begin
Listbox1.Items.add(OpenDialig1.FileName);
end
for i := 0 ListBox1.Items.Count -1 do
Copy(Pchar(Origem), Pchar(ListBox1.Items[i], true);
end;
Dernivaldo Silva
Post mais votado
10/07/2018
Fiz um exemplo hoje 10.07.2018
Veja se é isso que você precisa: https://youtu.be/t_shsbaDhT0
Raimundo Pereira
Mais Posts
11/07/2018
Dernivaldo Silva
11/07/2018
Raimundo Pereira
interface uses Shellapi, // << Não esqueça de add Shellapi Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls; type TFP = class(TForm) Panel_Geral: TPanel; Lista_Destinos: TListBox; Btn_carregar: TButton; Panel1: TPanel; Btn_add_list: TButton; OpenDialog1: TOpenDialog; Btn_Copy_all: TButton; Label1: TLabel; Edt_pasta_dest: TEdit; edt_camiho_completo_arquivo_Origem: TEdit; Label3: TLabel; Btn_Seleciona_arquivo_origem: TButton; Label4: TLabel; Edt_arq_origem: TEdit; procedure Btn_carregarClick(Sender: TObject); procedure Btn_add_listClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Btn_Copy_allClick(Sender: TObject); procedure Btn_Seleciona_arquivo_origemClick(Sender: TObject); procedure Edt_pasta_destKeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var FP: TFP; // Não esqueça de add Caminho_Lista:string; Arquivo_Dest,Arquivo_Origem:string; ComandoCopy:string; // Não esqueça de add ^ implementation {$R *.dfm} // Adiciona pasta de destino + arquivo procedure TFP.Btn_add_listClick(Sender: TObject); begin if not(DirectoryExists(Edt_pasta_dest.Text)) then begin ShowMessage('Verifique a pasta de destino'); abort; end; Arquivo_Dest:=Edt_pasta_dest.Text + Edt_arq_origem.Text; Lista_Destinos.Items.Add(Arquivo_Dest); Lista_Destinos.Items.SaveToFile(Caminho_Lista); end; procedure TFP.Btn_carregarClick(Sender: TObject); begin if FileExists(Caminho_Lista) then begin Lista_Destinos.Clear; Lista_Destinos.Items.LoadFromFile(Caminho_Lista); end else begin Lista_Destinos.Items.SaveToFile(Caminho_Lista); end; end; procedure TFP.Btn_Copy_allClick(Sender: TObject); var I: Integer; begin if Edt_arq_origem.Text='' then begin ShowMessage('Você precisa selecionar um arquivo para cópia'); end else begin Lista_Destinos.Update; Lista_Destinos.ItemIndex:=0; // O segredo do que você precisa ocorre aqui // É realizado um for na listbox e atualizando apenas o param Arquivo_Dest // Em seguida o ShellExecute executa o comando completo ComandoCopy for I := 0 to Lista_Destinos.Items.Count-1 do begin //Captura o listbox de acordo com i Lista_Destinos.ItemIndex:=i; //Atualiza os dados Arquivo_Dest Arquivo_Dest:=Lista_Destinos.Items[Lista_Destinos.ItemIndex]; // Atualiza o ComandoCopy ComandoCopy:='copy "'+Arquivo_Origem+'" "'+Arquivo_Dest+'" /y'; // Executa o comando ShellExecute(0, nil, 'cmd.exe', PWideChar('/c ' + ComandoCopy), nil, 0); end; end; end; procedure TFP.Btn_Seleciona_arquivo_origemClick(Sender: TObject); begin OpenDialog1.Title := 'Selecione o arquivo de origem!'; OpenDialog1.Execute(); Arquivo_Origem:=OpenDialog1.FileName; edt_camiho_completo_arquivo_Origem.Text := Arquivo_Origem; Edt_arq_origem.Text := ExtractFileName(OpenDialog1.FileName); end; procedure TFP.Edt_pasta_destKeyPress(Sender: TObject; var Key: Char); begin if key=#13 then begin Btn_add_listClick(self); end; end;
13/07/2018
Dernivaldo Silva
<br />
<br />
Obrigado
Clique aqui para fazer login e interagir na Comunidade :)