• Miércoles 1 de Mayo de 2024, 09:32

Autor Tema:  Error Copiando Directorios  (Leído 1569 veces)

Pyroman

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Error Copiando Directorios
« en: Sábado 23 de Octubre de 2004, 02:12 »
0
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

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Error Copiando Directorios
« Respuesta #1 en: Sábado 30 de Octubre de 2004, 16:09 »
0
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

  • Miembro MUY activo
  • ***
  • Mensajes: 271
    • Ver Perfil
    • http://AyudaCBuilder.foros.st
Re: Error Copiando Directorios
« Respuesta #2 en: Jueves 11 de Noviembre de 2004, 20:10 »
0
Código: Text
  1. sPath = IncludeTrailingPathDelimiter(sPath);
  2.  

Eso te agrega el delimitador al final ;)
Saludos!
_Viktor _Yañez_
"Ser inteligente no es ser mas, solo equivocarse menos y no usar visual basic"

http]