Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-10-2011
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
No consigo renombrar un archivo

Mira, no estoy conseguindo renombrar un archivo con RenameFile en una busca con SearchRec. Abajo mi rutina que deberia renombrar mis archivos.
Código Delphi [-]
procedure TFileFinder.Start;
  procedure PathFound(const Path: string);
  var
    Dir,texto,txt1,txt2,txtfinal,ext: string;
    Mask: string;
    SR: TSearchRec;
  begin

    Dir := IncludeTrailingPathDelimiter(Path);
    if not AceitarDirectory(Dir) then
      Exit;

    // Procura os arquivos
    Mask := Dir + '*.*';
    if Active and (FindFirst(Mask, faAnyFile - faDirectory, SR) = 0) then
      try
        //fNextDir := false;
        inc(cont);
        texto := '-'+StrZero(cont,4);
        repeat
          txt1 := SR.Name;
          Insert(texto,SR.Name,21);
          txt2 := SR.Name;
          RenameFile(txt1,txt2);
        until (FindNext(SR) <> 0) or (not Active);// or fNextDir;
      finally
        FindClose(SR);
      end;

    // Percorre a arvore de diretórios
    Mask := Dir + '*.*';
    OnDir := Mask;
    if Active and Recursive and (FindFirst(Mask, faDirectory, SR) = 0) then
      try
        repeat
          if (SR.Name <> '.') and (SR.Name <> '..') then
            PathFound(Dir + SR.Name);
        until (FindNext(SR) <> 0) or (not Active);
      finally
        FindClose(SR);
      end;
  end;
Responder Con Cita
  #2  
Antiguo 03-10-2011
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Lo primero que se me ocurre (no das información acerca del posible error, si es que lo hay) es que el archivo esté en uso, sin ir más lejos, por el propio objeto "TSearchRec". Igual podrías buscar los archivos primero, almacenar los cambios a realizar de alguna forma, y, después, renombrar los archivos. No sé. Es una idea.
Responder Con Cita
  #3  
Antiguo 03-10-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
txt1 y txt2 puede que tengan el mismo nombre si Insert(...) no hace bien su trabajo.
Estás seguro de que txt1 y txt2 son diferentes?
Código Delphi [-]
txt1 := SR.Name;
Insert(texto,SR.Name,21);
txt2 := SR.Name;
if (txt1 = txt2) then
   ShowMessage('txt1 y txt2 son iguales!');
RenameFile(txt1,txt2);
Responder Con Cita
  #4  
Antiguo 04-10-2011
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
No, no son iguales no. Quando inserto una string, SR.Name ya pasa a ser diferente, luego txt1 <> txt2. No da ningun mensaje de error. Simplesmente no cambia.
Responder Con Cita
  #5  
Antiguo 04-10-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.735
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Prueba agregar esto, para saber cual es el error.
Si no lo puede renombrar te dará un código de error.
Código Delphi [-]
var
  CodigoError : integer;
...
txt1 := SR.Name;
Insert(texto,SR.Name,21);
txt2 := SR.Name;
if (txt1 = txt2) then
   ShowMessage('txt1 y txt2 son iguales!');
if RenameFile(txt1,txt2) then
   ShowMessage('Se renombro correctamente ' + txt1 + ' a ' + txt2)
else
begin
   CodigoError := GetLastError;
   ShowMessage('Error ' + IntToStr(CodigoError) + ' ' + SysErrorMessage(CodigoError) + ' renombrando 'txt1 + ' a ' + txt2)
end;

Última edición por duilioisola fecha: 04-10-2011 a las 09:10:28.
Responder Con Cita
  #6  
Antiguo 05-10-2011
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Ok, aun no tuvo tiempo para ejecutar esto.
Responder Con Cita
  #7  
Antiguo 05-10-2011
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Bueno, estoy haciendo los testes ahora y me lo da el seguinte error:
Código Delphi [-]
Error 2. El sistema no puede encuentrar el archivo especificado. Renombrando....
Voy a cambiar la forma de renombrar para ver si es esto.
Responder Con Cita
  #8  
Antiguo 05-10-2011
Paulao Paulao is offline
Miembro
 
Registrado: sep 2003
Ubicación: Rua D 31 Casa 1 - Inhoaíba - Rio de Janeiro - RJ - Brasil
Posts: 637
Poder: 21
Paulao Va por buen camino
Bueno, decobri el problema. El problema estava entre el teclado y la pantalla,ehehehe. Es que yo no estava pasando todo del archivo, solamente el nombre y deberia se el nombre, con su Path, o sea, Path + Nombre. Cambie y funciono.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Renombrar Carpeta Paulao Varios 1 18-08-2011 14:16:25
Renombrar el EXE al compilar Behemot Varios 4 02-04-2008 16:18:53
Renombrar archivo mcalmanovici Varios 6 02-01-2008 17:51:00
Error Raro sobre archivo "ntdll.dll" que no consigo encontrar el motivo AGAG4 Impresión 1 23-11-2007 07:11:17
renombrar un fichero EfrainSanmiguel Varios 4 16-12-2005 20:32:55


La franja horaria es GMT +2. Ahora son las 05:15:16.


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
Copyright 1996-2007 Club Delphi