![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
copiar un directorio en otro
Hola :
Supongamos que tengo un directorio origen llamado c:\carpeta (dentro de prueba hay un subdirectorio llamado T1). Quiero copiar el contenido de c:\carpeta (incluido ficheros y subdirectorios) a la carpeta destino c:\pp (la carpeta pp esta creada previamente manualmente). El problema que tengo es que con el código siguiente me crea dentro de la carpeta pp otro directorio llamado carpeta y no es lo que deseo. Quiero también que se sobreescriba si algún fichero o carpeta existe dentro del directorio destino sin preguntar. Código:
// RenameOnCollision : Boolean; //Renames if directory exists
// NoConfirmation : Boolean; //Responds "Yes to All" to any dialogs
// Silent : Boolean; //No progress dialog is shown
// ShowProgress : Boolean; //displays progress dialog but no file names
// FromDir : String; //From directory, source
// ToDir : String // To directory, source
Function copyDir(RenameOnCollision:Boolean; NoConfirmation:Boolean; Silent:Boolean; ShowProgress:Boolean; FromDir:String; ToDir:String):Boolean;
var
SHFileOpStruct : TSHFileOpStruct;
FromBuf, ToBuf: Array [0..255] of Char;
begin
Try
Fillchar(SHFileOpStruct, Sizeof(SHFileOpStruct), 0 );
FillChar(FromBuf, Sizeof(FromBuf), 0 );
FillChar(ToBuf, Sizeof(ToBuf), 0 );
StrPCopy(FromBuf, FromDir);
StrPCopy(ToBuf, ToDir);
With SHFileOpStruct Do
Begin
Wnd := 0;
wFunc := FO_COPY;
pFrom := @FromBuf;
pTo := @ToBuf;
fFlags := FOF_ALLOWUNDO;
If RenameOnCollision Then fFlags := fFlags or
FOF_RENAMEONCOLLISION;
If NoConfirmation Then fFlags := fFlags or
FOF_NOCONFIRMATION;
If Silent Then fFlags := fFlags or
FOF_SILENT;
If ShowProgress Then fFlags := fFlags or
FOF_SIMPLEPROGRESS;
End;
Result := (SHFileOperation(SHFileOpStruct) = 0); // it goes wrong here
Except
Result := False;
End;
end;//copyDir
Código:
copyDir( false, true, false, false, PChar('c:\prueba'), Pchar('c:\pp');
gracias de antemano!! |
|
#2
|
||||
|
||||
|
Hola petete2008.
Probá de este modo:
Llamada de ejemplo:
Saludos.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 08-03-2012 a las 18:57:52. |
|
#3
|
|||
|
|||
|
Gracias, al final lo solucione de esta forma
Código:
Procedure Copy1Dir(fromDir, toDir : String); var fileOp: TShFileOpStruct; begin FillChar(fileOp, Sizeof(TShFileOpStruct), 0); fromDir := fromDir + '\*.*'#0; toDir := toDir + #0; with fileOp do begin wnd := Application.Handle; wfunc := FO_COPY; pFrom := PChar(fromDir); pTo := PChar(toDir); fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION; fAnyOperationsAborted := false; hNameMappings := nil; lpszProgressTitle := nil; end; SHFileOperation(fileOp); end; |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Copiar la propia aplicación a otro directorio | Gothem | Varios | 2 | 26-06-2011 22:15:30 |
| Copiar directorio | novaten | Varios | 5 | 11-01-2011 22:53:04 |
| Copiar directorio y renomer el proyecto | Paulao | Varios | 2 | 01-07-2008 12:21:34 |
| FileStream pa copiar todo un directorio o carpeta | Oxa78 | Varios | 0 | 23-03-2007 00:09:39 |
| copiar un archivo a otro directorio | scotex | Varios | 2 | 19-02-2005 11:27:10 |
|