PDA

Ver la Versión Completa : Renombrar archivo


mcalmanovici
02-01-2008, 15:22:19
Hola gente:
tengo el siguiente problema: estoy ejecutando un archivo .dat desde un servidor remoto, y luego que lo ejecuto lo quiero renombrar a .dat.done.
Para hacer esto utilizo el siguiente código:

newName := '\\10.10.30.20 \Iridium\CDRs\CDH99809kkk.dat.done';
if RenameFile('\\10.10.30.20\Iridium\CDRs\CDH99809kkk.dat', newName) then
ShowMessage('newName.dcu renamed OK')
else
ShowMessage('newName.dcu rename failed with error : '+ IntToStr(GetLastError));
CloseFile(Arch);


cuando ejecuto esto en GetLastError me dá el código 32 y por lo tanto no me renombra el archivo que quiero.
No tengo idea que estoy realizando mal. Ya busqué por todos lados en internet y no encuentro solución.

Muchas gracias por anticipado por vuestra ayuda.

Mariano.

Khronos
02-01-2008, 15:35:21
Si el archivo esta en ejecución no lo podrás renombrar, prueba a cerrarlo primero y luego a renombrarlo ;)

Salu2

marcoszorrilla
02-01-2008, 15:37:26
Yo utilizo el componente NMTP que viene con Delphi, me conecto al servidor y luego hago:

Try
NMFTP.Rename(cFichero,EdFichero.Text);
Except
ShowMessage('Error al cambiar de nombre al fichero.');
end;


Y me conecto así:

procedure TfrExpterminales.btConectarClick(Sender: TObject);
begin
btDesconectar.Enabled :=True;
btListar.Enabled :=True;
btEliminar.Enabled:=True;
btSubir.Enabled :=True;
btDescargar.Enabled :=True;

btConectar.Enabled :=False;

pnEstado.Caption:='Servidor Conectado';
pnEstado.Font.Color:=ClGreen;
pnEstado.BevelOuter:=bvRaised;

NMFTP.Host := HostTxt.Text;
NMFTP.Port := StrToInt(PortTxt.Text);
NMFTP.Timeout := 5000;
NMFTP.UserID := UserTxt.Text;
NMFTP.Password := PassTxt.Text;
try
NMFTP.Connect;
except
On E:Exception do
writeln(E.message);
end;
end;
Un Saludo.

Neftali [Germán.Estévez]
02-01-2008, 15:40:21
Ya tienes suficientes permisos para realizar la operación.
Hay una función que te devuelve el texto asociado a ese error, el problema es que ahora no recuerdo cual...

dec
02-01-2008, 15:46:30
Hola,

La función a la que se refiere Neftalí creo que es "SysErrorMessage". En todo caso, podría ser que la función "RenameFile" no admitiera archivos "en red"... lo cierto es que trato de encontrar la ayuda de esta función en MSDN y no aparece nada... fuera de la plataforma .NET... Igual no estoy buscando en el lugar adecuado. :(

Neftali [Germán.Estévez]
02-01-2008, 15:54:43
A esa me refería; Puedes utilizar:


ShowMessage(SysErrorMessage(GetLastError));

mcalmanovici
02-01-2008, 17:51:00
Si el archivo esta en ejecución no lo podrás renombrar, prueba a cerrarlo primero y luego a renombrarlo ;)

Salu2

Gente:
muchas gracias por las contestaciones de todos.
Efectivamente no estaban cerrando el archivo antes de renombrarlo..
Lo cerre antes de renombrarlo y funciono todo bien.

Saludos,
Mariano.