Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   sobreescribir directorio (https://www.clubdelphi.com/foros/showthread.php?t=32159)

Leonardo 27-05-2006 23:21:55

sobreescribir directorio
 
que tal estoy tratando de encontrar la forma de poder copiar una carpeta, pero si esta ya existe quiero que me sobreescriba el contenido, dentro de los foros encontre una liga con el siguiente codigo:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
 
  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 
   Wnd   := Application.Handle;
   wFunc := FO_COPY;
   pFrom := @sOrigen[1];
   pTo   := @sDestino[1];
   fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION
 end; 
 
 Result := ShFileOperation(F);
end; 
 
begin 
  CopiaTodo('c:\Delphi3\*.*','c:\kk');
end;

este procedimiento funciona bien, solo que si el directorio ya existe me creo otro con el mismo nombre y los va anidando.

como puedo hacer para que me sobreescriba el directorio.

Sotrono 27-05-2006 23:33:52

Hola, para escribir con la sintaxis de Delphi en el foro tenés la Etiqueta Delphi, que hace mucho mas legible el codigo.
Para usarla hay un boton en la barra de herramientas del editor de textos de los post con el simbolo de ClubDelphi.

Bytes!!

Sotrono 28-05-2006 00:00:51

Cita:

Empezado por Leonardo
como puedo hacer para que me sobreescriba el directorio.

Lo que querés vos es que se borre todo el contenido original del directorio y que luego se realice la copia de archivos o querés que, si existen archivos con el mismo nombre a los que se van a copiar, éstos se sobreescriban, quedando así el directorio con el contenido viejo (menos los archivos que se sobreescribieron) más el contenido nuevo??

Por si te interesa, aca tenés la documentación de Micro$oft.

dec 28-05-2006 03:32:49

Hola,

Cita:

este procedimiento funciona bien, solo que si el directorio ya existe me creo otro con el mismo nombre y los va anidando.
No me termino de aclarar con qué querrás decir con eso de que los va anidando... ¿podrías explicarlo un poco? Gracias. :D

Leonardo 28-05-2006 07:27:05

lo que pretendo hacer es lo segundo que mencionas satrono
"si existen archivos con el mismo nombre a los que se van a copiar, éstos se sobreescriban, quedando así el directorio con el contenido viejo (menos los archivos que se sobreescribieron) más el contenido nuevo"


y a lo que me refiero con anidar es que si copio el directorio c:\prueba

a c:\destino la primera vez queda asi c:\destino\prueba

si vuelvo a ejecutar elprocedimiento ahora queda asi c:\destino\prueba\prueba

Lepe 28-05-2006 09:30:35

Cita:

Empezado por Leonardo
si vuelvo a ejecutar elprocedimiento ahora queda asi c:\destino\prueba\prueba

Se quedará la cadena "prueba" en alguna variable, de forma que se concatena, porque la verdad no tiene sentido alguno :(. Revisa bien el código.

Saludos

Sotrono 28-05-2006 15:49:46

Cita:

Empezado por Sotrono
"si existen archivos con el mismo nombre a los que se van a copiar, éstos se sobreescriban, quedando así el directorio con el contenido viejo (menos los archivos que se sobreescribieron) más el contenido nuevo"

Revisa bien cómo le pasas los parámetros, porque a mi me funciona bien la función, es decir me hace lo que dije en la cita.

Cita:

Empezado por Sotrono
lo que pretendo hacer es lo segundo que mencionas satrono

Saludos LeAnardo!! :D :D


La franja horaria es GMT +2. Ahora son las 21:30:04.

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