Fórum Como copiar apenas um arquivo para vários diretórios listados na Listbox1 #595401
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
Curtir tópico
+ 0Post 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
Gostei + 2
Mais Posts
10/07/2018
Dernivaldo Silva
Gostei + 0
11/07/2018
Dernivaldo Silva
Gostei + 0
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;Gostei + 0
11/07/2018
Dernivaldo Silva
Gostei + 0
13/07/2018
Dernivaldo Silva
<br />
<br />
Obrigado
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)