Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Renombrar archivo (https://www.clubdelphi.com/foros/showthread.php?t=51857)

mcalmanovici 02-01-2008 16:22:19

Renombrar archivo
 
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:
Código Delphi [-]
  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 16: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 16:37:26

Yo utilizo el componente NMTP que viene con Delphi, me conecto al servidor y luego hago:
Código Delphi [-]
    Try
    NMFTP.Rename(cFichero,EdFichero.Text);
    Except
    ShowMessage('Error al cambiar de nombre al fichero.');
    end;


Y me conecto así:
Código Delphi [-]
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 16: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 16: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 16:54:43

A esa me refería; Puedes utilizar:

Código Delphi [-]
  ShowMessage(SysErrorMessage(GetLastError));

mcalmanovici 02-01-2008 18:51:00

Gracias.
 
Cita:

Empezado por Khronos (Mensaje 255484)
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.


La franja horaria es GMT +2. Ahora son las 12:55:17.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi