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 |
|