Gauge ou ProgressBar na copia dos Aquivo, alguem sabe ?

Delphi

19/02/2004

[b:6d624431c4]Tenho este comando abaixo , que copia os arquivo da pasta do diretório C:\ para o Disquete A:\........Como faço para colocar Gauge ou ProgressBar .........Para fazer a contagem do primeiro arquivo a ultimo arquivo ...[ ]s...jairo [/b:6d624431c4]

procedure TForm1.Button2Click(Sender: TObject);
var
SR: TSearchRec;
I: integer;
Origem, Destino: string;
begin
I := FindFirst(´C: \Origem\*.*´, faAnyFile, SR);
while I = 0 do begin
if (SR.Attr and faDirectory) <> faDirectory then begin
Origem := ´C: \Origem\´ + SR.Name;
Destino := ´A: \Destino\´ + SR.Name;
if not CopyFile(PChar(Origem), PChar(Destino), true) then
ShowMessage(´Erro ao copiar ´ + Origem + ´ para ´ + Destino);
end;
I := FindNext(SR);
end;
end;


Jairo-go

Jairo-go

Curtidas 0

Respostas

Lucas Silva

Lucas Silva

19/02/2004

Tá faltando o maximo valor do gauge;
Nele você tem q colcar o número de repetições do while...
Geralemte em query você coloca o RecordCount;

procedure TForm1.Button2Click(Sender: TObject); 
var 
SR: TSearchRec; 
I: integer; 
Origem, Destino: string; 
begin 
Gauge.Min := 0;
I := FindFirst(´C: \Origem\*.*´, faAnyFile, SR); 
while I = 0 do begin 
GauGe.Progress := GauGe.Progress + 1;
if (SR.Attr and faDirectory) <> faDirectory then begin 
Origem := ´C: \Origem\´ + SR.Name; 
Destino := ´A: \Destino\´ + SR.Name; 
if not CopyFile(PChar(Origem), PChar(Destino), true) then 
ShowMessage(´Erro ao copiar ´ + Origem + ´ para ´ + Destino); 
end; 
I := FindNext(SR); 
end; 
end;



GOSTEI 0
Lucas Silva

Lucas Silva

19/02/2004

Se o arquivo for grande coloque um Gauge...
Se for pqno coloque um Progress Bar....


GOSTEI 0
Bolus

Bolus

19/02/2004

Caro Colega,
Procure na Internet o Componente FindFile, nele você coloca o Diretório Inicial, o Filtro e ele devolve em uma propriedade (não lembro agora qual) uma Lista contendo o nome do Arquivos. Como essa propriedade é do Tipo TStringList, você terá o numero de Interações que precisa para informar o valor maximo de interações.....

Ficaria assim.
  Procedure TForm1.Button2Click(Sender: TObject); 
  var 
    Arquivos: TFindFile; 
    I: integer; 
    Origem, Destino: string; 
  begin 
    Arquivos.Filter := ´*.*´;
    Arquivos.Directory := ´C:\Origem´;
    Arquivos.Execute;
    For I := 0 to Arquivos.FileNames.Count-1 do
    begin
      ProgressBar.Progress := Trunc((I*100)/FileNames.Count); 
      Origem := ´C:\Origem\´ + Arquivos.FileNames[I]; 
      Destino := ´A:\Destino\´ + Arquivos.FileNames[I]; 
      if not CopyFile(PChar(Origem), PChar(Destino), true) then 
        ShowMessage(´Erro ao copiar ´ + Origem + ´ para ´ + Destino); 
    end; 
  end;


Espero ter ajudado....


GOSTEI 0
Lucas Silva

Lucas Silva

19/02/2004

Acho muito complicado vc colocar componentes novos.
Qualquer qualquer computador que você for editar o projetos, irá ter q ter o componentes instalados e tudo mais...
Já passei muita raiva por isto..

Pense bem antes de instalar componentes do delphi.


Falow!


GOSTEI 0
Bolus

Bolus

19/02/2004

Caro Colega,
Você não precisará instalar o componente, pois ele foi criado em Object Pascal e contem os Fontes, ou seja, você pode simplesmente incluir no USES e coloca o .PAS no diretorio de LIB ou no diretório do Projeto....

Obrigado.....


Afinal ,muitas vezes não precisamos recriar a roda, somente melhora-lá..


GOSTEI 0
Lucas Silva

Lucas Silva

19/02/2004

qualquer componente que você instalar, e usar o seu projeto.
Qualquer computador que você for editar seu projeto, vc vai ter que instalar ele também...
Eu acho isto muito complicado......

Isso que eu quis dizer.....


GOSTEI 0
Lucas Silva

Lucas Silva

19/02/2004

Eu sou da seguinte opinião...
já que o delphi te disponibiliza um componente, pra que você vai baixar outro componente, [b:cde49dff10]semelhante[/b:cde49dff10] a ele.


GOSTEI 0
Bolus

Bolus

19/02/2004

Caro Colega,
somente coloquei o componente, pois ele já traz todos os Arquivos contindos no Diretorio de Origem, assim antes de começar a cópia dos arquivos o Programador já tem a disposição a quantidade de Arquivos e assim poderá informar o percentual correto.....
Já no FindFirst/FindNext, ele não saberá quantos arquivos estará transmitindo.
Como vem com o Fonte, trato como fosse um arquivo normal, ou seja coloco no diretorio do programa e quando preciso levar os fontes somente compacto o diretorio e o componente vai junto, não sendo preciso nenhuma configuração....
Já utilizei muito o FindFirst/FindNext, tanto no Delphi como na Linguagem C/C++....

Também considero que devemos utilizar o minimo de Componentes de Terceiro, pois assim fica mais portavel o Programa....Mas as vezes precisamos de algumas facilidades que não dispomos no componente Padrão do delphi, por isso sempre procuro Componentes com Fonte.... E que possam ser incluidos diretos no Fonte sem precisar instalar no Delphi....

Até mais,

Um abraço....


GOSTEI 0
Nerdex

Nerdex

19/02/2004

Lucas !! tu tens um ponto de vista muito equivocado...

Os componentes que tu instala no Delphi e usará em um projeto, este, ficará, o código do componente grudado no teu projeto, ou seja no teu .exe, assim como todos os componentees nativos do Delphi fazem...
Sendo assim, vc não precisará, de forma algum, instalar components nas máquinas que vc instalar o teu projeto. além do mais componentes são geralmente ´vistas´, somente pelo compilador Delphi...

E o seguinte...existem com certeza, melhores componentes, do que os nativos do Delphi, por aí....


GOSTEI 0
POSTAR