Restauracion
Publicado por Roberto Garcia (21 intervenciones) el 05/06/2005 06:09:53
Hola
Tengo el siguientes problema
Tengo una aplicacion que respalda y restura sus archivos de su base de datos.
Respaldar esta funcionando muy bien, pues solo copia los archivos actuales de la base de datos a otra ubicacion.
Restuarar me presenta dos problemas.
(Restaurar copia los archivos previamentes respaldados a la carpeta de la base de datos de la aplicacion)
1. No me deja copiar los archivos con extension .px (Paradox claro), pero los .db si, al momento que intenta copiar algun archivo .PX, me manda un mensaje que dice que no se puede copiar el archivo (bueno, mas bien el mensaje lo mando yo), y enseguida me manda un error de "Path No Found"
2. No se como hacer para que los archivos respalados se copien directamente en la carpeta de la base de datos de la palicacion que se llama "tablas\", para obtener el directorio desde donde se ejecuta la aplicacion hago lo siguiente:
{1} copiar:=application.ExeName;
{2} delete(copiar,pos('DICCIONARIO.EXE',copiar),length('diccionario.exe'));
{3} copiar:=copiar+'tablas\';
{1} Obtengo la ruta completa desde donde se ejecuta el programa
{2} Como la ruta incluye el nombre del .EXE tengo que borrar el nombre
{3} Luego "me cambio" a la carpeta tablas
esto es muy temerario porque es algun momento al usuario se le puede ocurrir cambiar el nombre del ejecutable, que es muy poco probable, pero en fin, como puedo hacer para obtener la ruta completa desde donde se ejecuta el programa, sin que se incluya el nombe del .exe
A continuacion el codigo del procedimiento "Restaurar"
copiar:=application.ExeName;
delete(copiar,pos('DICCIONARIO.EXE',copiar),length('diccionario.exe'));
copiar:=copiar+'tablas';
for i:= 0 to fl1.itemindex do begin
if fl1.selected[i] then begin
copiar:=copiar+'\'+fl1.items[i];
ruta.caption:=copiar;
if cancelado then begin
EFinRespaldo;
application.MessageBox('El respaldo ha sido cancelado por el usuario','Proceso finalizado',mb_ok+mb_IconWarning);
break;
end;
application.ProcessMessages;
if dl1.itemindex=0 then
origen:=dl1.getitempath(0)+fl1.items[i]
else
origen:=dl1.Directory+'\'+fl1.items[i];
if not CopyFile(PChar(origen),PChar(copiar),false) then begin
application.MessageBox('No se pudo copiar el archivo','Proceso finalizado', mb_ok+mb_IconWarning);
cancelado:=true;
end;
end;// if fl1.selected[i]
end;//for
Tengo el siguientes problema
Tengo una aplicacion que respalda y restura sus archivos de su base de datos.
Respaldar esta funcionando muy bien, pues solo copia los archivos actuales de la base de datos a otra ubicacion.
Restuarar me presenta dos problemas.
(Restaurar copia los archivos previamentes respaldados a la carpeta de la base de datos de la aplicacion)
1. No me deja copiar los archivos con extension .px (Paradox claro), pero los .db si, al momento que intenta copiar algun archivo .PX, me manda un mensaje que dice que no se puede copiar el archivo (bueno, mas bien el mensaje lo mando yo), y enseguida me manda un error de "Path No Found"
2. No se como hacer para que los archivos respalados se copien directamente en la carpeta de la base de datos de la palicacion que se llama "tablas\", para obtener el directorio desde donde se ejecuta la aplicacion hago lo siguiente:
{1} copiar:=application.ExeName;
{2} delete(copiar,pos('DICCIONARIO.EXE',copiar),length('diccionario.exe'));
{3} copiar:=copiar+'tablas\';
{1} Obtengo la ruta completa desde donde se ejecuta el programa
{2} Como la ruta incluye el nombre del .EXE tengo que borrar el nombre
{3} Luego "me cambio" a la carpeta tablas
esto es muy temerario porque es algun momento al usuario se le puede ocurrir cambiar el nombre del ejecutable, que es muy poco probable, pero en fin, como puedo hacer para obtener la ruta completa desde donde se ejecuta el programa, sin que se incluya el nombe del .exe
A continuacion el codigo del procedimiento "Restaurar"
copiar:=application.ExeName;
delete(copiar,pos('DICCIONARIO.EXE',copiar),length('diccionario.exe'));
copiar:=copiar+'tablas';
for i:= 0 to fl1.itemindex do begin
if fl1.selected[i] then begin
copiar:=copiar+'\'+fl1.items[i];
ruta.caption:=copiar;
if cancelado then begin
EFinRespaldo;
application.MessageBox('El respaldo ha sido cancelado por el usuario','Proceso finalizado',mb_ok+mb_IconWarning);
break;
end;
application.ProcessMessages;
if dl1.itemindex=0 then
origen:=dl1.getitempath(0)+fl1.items[i]
else
origen:=dl1.Directory+'\'+fl1.items[i];
if not CopyFile(PChar(origen),PChar(copiar),false) then begin
application.MessageBox('No se pudo copiar el archivo','Proceso finalizado', mb_ok+mb_IconWarning);
cancelado:=true;
end;
end;// if fl1.selected[i]
end;//for
Valora esta pregunta


0