Copiar arquivo com barra de progresso
Andei procurando uma rotina para copiar arquivo e mostrar a barra de progresso e achei essa:
procedure TForm1.CopyFileWithProgressBar1(Source, Destination: string);
var
FromF, ToF: file of byte;
Buffer: array[0..4096] of char;
NumRead: integer;
FileLength: longint;
begin
AssignFile(FromF, Source);
reset(FromF);
AssignFile(ToF, Destination);
rewrite(ToF);
FileLength := FileSize(FromF);
with Progressbar1 do
begin
Min := 0;
Max := FileLength;
while FileLength > 0 do
begin
BlockRead(FromF, Buffer[0], SizeOf(Buffer), NumRead);
FileLength := FileLength - NumRead;
BlockWrite(ToF, Buffer[0], NumRead);
Position := Position + NumRead;
end;
CloseFile(FromF);
CloseFile(ToF);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CopyFileWithProgressBar1('c:\Windows\Welcome.exe', 'c:\temp\Welcome.exe');
end;
Porém ao copiar o arquivo ele muda a data e hora original do arquivo.
Alguém sabe como resolvo isto?
procedure TForm1.CopyFileWithProgressBar1(Source, Destination: string);
var
FromF, ToF: file of byte;
Buffer: array[0..4096] of char;
NumRead: integer;
FileLength: longint;
begin
AssignFile(FromF, Source);
reset(FromF);
AssignFile(ToF, Destination);
rewrite(ToF);
FileLength := FileSize(FromF);
with Progressbar1 do
begin
Min := 0;
Max := FileLength;
while FileLength > 0 do
begin
BlockRead(FromF, Buffer[0], SizeOf(Buffer), NumRead);
FileLength := FileLength - NumRead;
BlockWrite(ToF, Buffer[0], NumRead);
Position := Position + NumRead;
end;
CloseFile(FromF);
CloseFile(ToF);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CopyFileWithProgressBar1('c:\Windows\Welcome.exe', 'c:\temp\Welcome.exe');
end;
Porém ao copiar o arquivo ele muda a data e hora original do arquivo.
Alguém sabe como resolvo isto?
Leandro Carvalho
Curtidas 0
Respostas
Leandro Carvalho
19/04/2011
Ninguém?
GOSTEI 0
Wilson Junior
19/04/2011
De uma olhada nestes links:
http://www.delphibasics.co.uk/RTL.asp?Name=FileAge
http://delphi.about.com/cs/adptips2001/a/bltip0701_3.htm
Espero ter colaborado.
http://www.delphibasics.co.uk/RTL.asp?Name=FileAge
http://delphi.about.com/cs/adptips2001/a/bltip0701_3.htm
Espero ter colaborado.
GOSTEI 0
Moises
19/04/2011
Boa noite, Leandro. Tudo bem ?
Olha, estou com o mesmo problema. Fazendo uma rotina para verificar a data de criação dos arquivos e com essa informação copiar (ou não) para um outro diretório. Acontece que, antes de " pegar" a data deles eu preciso transferir de uma pasta (com subdiretorios ) para uma pasta exclusiva dos relatorios. E nessa copia as datas mudam.
Queria saber se voce conseguiu resolver e, se possivel, poderia compartilhar a solução comigo ?
Muito obrigado.
GOSTEI 0
Leandro Carvalho
19/04/2011
Caro Wilson. Muito obrigado pela atenção mais isto que tu me passou é para mudar a data de criação/modificação do arquivo.
Eu gostaria de uma rotina completa de tranferência de arquivo que não mude a data de criação/modificação do mesmo.
GOSTEI 0
Leandro Carvalho
19/04/2011
Caro Moises, tenho uma rotina que copia arquivos entre pastas e que não muda a data de criação/modifição da mesma, porém esta rotina não dá suporte a barra de progresso, com isso o usuário pensa que o sistema travou/parou de funcionar.
Por isso que estou atrás de uma com barra de progresso e que não altere a data.
Mas pelo visto não tem.
GOSTEI 0