Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML.
Copiando no padrão Windows
Utilizando a caixa de diálogo do Windows para cópia
Dentro do conceito de reapro-veitar as funcões que as API's disponibilizam, um dos recursos fascinantes do Windows e o diálogo que aparece quando se copia arquivos. Imaginem o trabalho para fazer algo similar; teriamos que utilizar componentes VCL como Tanimation, TprogressBar, Tlabel e Tbutton, além de criar um algoritmo complexo para permitir máscaras, e se a cópia for para unidades de disco flexível, solicitar outro disco após preencher o primeiro. Analisaram o desafio? Prefiro apenas agradecer pelo fato de possuirmos todas estas funcionalidades prontas atraves da unit ShellAPI.
Então vamos aprender a copiar arquivos usando o Shell do Windows:
Nota do Autor: Inclua na seção uses ShellApi, caso contrário o compilador desconhecerá os tipos utilizados.
Var
Dados: TSHFileOpStruct;
begin
FillChar(Dados,SizeOf(Dados),0);
with Dados do
begin
wFunc := FO_COPY;
pFrom := PChar('c:\Fabio\*.txt');
pTo := PChar('a:\');
fFlags:= FOF_ALLOWUNDO;
end;
SHFileOperation(Dados);
end;
Infelizmente, registro como é difícil conseguir documentacão sobre as funcões contidas na unit ShellAPI. Que a Corel / Inprise viabilize maiores informações sobre este assunto.
Deduzimos que TSHFile OpStruct é um tipo record com os seguintes campos:
wFunc Parâmetro da tarefa a ser realizada;
pFrom Parâmetro com o path de origem;
pTo Parâmetro com o path de destino;
fFlags Parâmetro com opcões adcionais.
SHFileOperation Realiza a tarefa de copiar os arquivos contidos em dados .pFrom para dados .pTo.
Esta forma de copiar arquivos oferecem três vantagens básicas:
1) O Shell avisa para pôr um próximo disco quando o atual estiver cheio.
2) Mostra a barra de progresso.
3) Pode copiar arquivos usando máscara de uma forma extremamente simples.
Até nosso próximo encontro e que os especialistas em C e C++ nos auxiliem cada vez mais para utilizarmos as funcões da misteriosa unit ShellAPI.