Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-01-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
como copar un dirctorio con el progressbar1

hola de nuevo amigo ya se como copiar un diretorio pero como ponerle un progressbar1 a la oprecion de copiado a qui le muestro el codigo y me gustaria q me dijieran como ponerle un progressbar1 a este codigo

Código Delphi [-]
 
function CopiaTodo(Origen,Destino : String) :
  LongInt;
  var
 F : TShFileOpStruct;
 sOrigen, sDestino : String;
  begin
 Result := 0;
 sOrigen := Origen + #0;
 sDestino := Destino + #0;
 with F do
 begin
   wFunc := FO_COPY;
   pFrom := @sOrigen[1];
   pTo   := @sDestino[1];
   fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION
 end;
 Result := ShFileOperation(F);
end;
begin
CopiaTodo('F:\archivos c\*.*','c:\archivos c\');
end;
end.
Responder Con Cita
  #2  
Antiguo 17-01-2008
Avatar de PeterPunk
PeterPunk PeterPunk is offline
Miembro
 
Registrado: ene 2008
Ubicación: Vigo
Posts: 22
Poder: 0
PeterPunk Va por buen camino
No es exactamente lo que quieres, pero si añades ZeroMemory(@F,SizeOf(F));[color=black] al código, se muestra la ventanita de copiar indicando que archivos está copiando y cuánto tiempo falta. También podrías utilizar FOF_NOCONFIRMMKDIR si el directorio destino no existe
Código Delphi [-]
function CopiaTodo(Origen,Destino : String) :   LongInt;
var
  F : TShFileOpStruct;
  sOrigen, sDestino : String;
begin
  Result := 0;
  sOrigen := Origen + #0;
  sDestino := Destino + #0;
  ZeroMemory(@F,SizeOf(F));
  with F do
    begin
      wFunc := FO_COPY;
      pFrom := @sOrigen[1];
      pTo   := @sDestino[1];
      fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR
    end;
  Result := ShFileOperation(F);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  CopiaTodo('d:\Borland_delphi_7\*.*','d:\BD7\');
end;

De todas formas si quieres que se muestre en tu propio progressbar me parece que tendrás que ir enviando archivo por archivo a copiar para controlar lo que vas copiando. Algo así (me ayudo de una filelistbox para enviar los archivos):

Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
  i: integer;
begin
  filelistbox1.Directory:= 'd:\Borland_delphi_7';
  filelistbox1.Update;
  progressbar1.max:= filelistbox1.Count;
  progressbar1.Step:= 1;
  for i:= 0 to filelistbox1.Count - 1 do
    begin
      CopiaTodo('d:\Borland_Delphi_7\' + filelistbox1.Items.Strings[i],
                'd:\BD7\' + filelistbox1.Items.Strings[i]);
      progressbar1.StepIt;
    end
end;

Bueno, aquí deberías modificar algo el código para copiar los subdirectorios.
Aún así, este código no sería muy exacto ya que si copiamos 99 archivos de 1 Kb y un archivo de 200 Megas, hay un 1 % de la progressbar que tardaría en mostrarse muchísimo más que el resto, pues el progressbar depende del número de archivos y no del tamaño de estos.
La opción perfecta (no la voy a programar) sería saber cuánto ocupa el directorio entero y luego copiar por código delphi (sin la API de Windows) con BlockRead y BlockWrite e incrementar el buffer en la progressbar.
Saludos.

Última edición por PeterPunk fecha: 17-01-2008 a las 13:32:34.
Responder Con Cita
  #3  
Antiguo 18-01-2008
Avatar de kurono
[kurono] kurono is offline
Miembro Premium
 
Registrado: jul 2007
Ubicación: Republica Dominicana
Posts: 1.126
Poder: 18
kurono Va por buen camino
ok lo revisare a ver que hago
Responder Con Cita
  #4  
Antiguo 18-01-2008
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Tambien echale un ojo a éste truco.

Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:06:44.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi