Programación General > C++ Builder
Error Copiando Directorios
(1/1)
Pyroman:
Holas escribo pq hace tiempo pedi ayuda sobre como copiar un directorio en tiempo de ejecucion y el usuario Viktor amablemente me sugirio usar esta funcion:
Codigo:--------------------------------------------------------------------------------
void __fastcall copiarCarpeta(String sOrigen, String sDestino)
{
SHFILEOPSTRUCT sfos;
sfos.hwnd = NULL;
sfos.wFunc = FO_COPY;
sfos.pFrom = sOrigen.c_str();
sfos.pTo = sDestino.c_str();
sfos.fFlags = FOF_NOCONFIRMMKDIR;
SHFileOperation(&sfos);
}
--------------------------------------------------------------------------------
Esa funcion la puedes usar de la siguiente manera:
Codigo:--------------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
copiarCarpeta("c:\\Original","e:\\CopiaOriginal");
}
Pues bien, al principio funcionaba bien pero luego empezo a darme errores del tipo "No se puede copiar archivo:no se puede leer del disco o archivo de origen", sin embargo hay veces q si funciona aun mostrando error por pantalla. Si alguien puede ayudarme con mi problema se lo agradeceria muxo. Tambien si alguien sabe de algun manual/tutorial del InstallShield de Builder 5 u otro programa de instalacion sencillo y freeware, se lo agradeceria aun mas. Mi mail es pyroonline@hotmail.com Muchas Gracias
Pyroman:
Voi a responderme a mi mismo y dejar la solucion que me funciona.
Antes de usar la funcion copiarCarpeta(), hay que hacer una pequeña operacion con el string Origen:
Origen.SetLength(dirOrigen.Length()+1);
Origen[dirOrigen.Length()]='\0';
Origen.SetLength(dirOrigen.Length()+1);
Origen[dirOrigen.Length()]='\0';
copiarCarpeta(Origen,Destino);
Asi añadiendo esos dos nulos a la cadena funciona perfectamente.
Saludos.
_Viktor:
--- Código: Text ---sPath = IncludeTrailingPathDelimiter(sPath);
Eso te agrega el delimitador al final ;)
Saludos!
Navegación
Ir a la versión completa