Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   RenameFile problema raro (https://www.clubdelphi.com/foros/showthread.php?t=76569)

Willo 09-11-2011 18:28:59

RenameFile problema raro
 
Buen dia a todos:

tengo un problema muy extraño, una aplicacion que ya estaba funcionando dejo de hacerlo despues de que a una de las maquinas en donde esta instalado se le cambio el sistema operativo (Vista a XP).

Especificamente lo que no hace la aplicacion, es renombrar archivos; esta misma aplicacion esta funcionando en otras 2 maquinas con XP, otra con Vista y otra con Windows 7.

El codigo es el siguiente:
Código:

              renamefile(xarchivoorig,extractfilepath(xarchivoorig)+xpoliza+'_rec'+ansirightstr(xarchivoorig,4));
              If fileexists(extractfilepath(xarchivoorig)+xpoliza+'_rec'+ansirightstr(xarchivoorig,4)) then
                    Result := extractfilepath(xarchivoorig)+xpoliza+'_rec'+ansirightstr(xarchivoorig,4);



no me da ningun error, el programa no se detiene ni mucho menos, simplemente IGNORA la instruccion y no la ejecuta. Alguna sugerencia??

P.D. ya cheque permisos de seguridad en windows, en los usuarios etc.

thecidmx 09-11-2011 20:34:15

la sintaxis de rename file es:

Renamefile (archivoexisente, nuevo_nombre);

la pregunta seria, y si no exite el archivo existente, entonces nunca renombraria nada, yo te recomendaria usar la tecla f8 en esa parte del progrma para ver que ace delphi,y si encuentra el archivo original a renombrar, y mejor aun si encuentra el archivo q estas buscando.

duilioisola 09-11-2011 20:43:18

También se me ocurre que las dos instrucciones que muestras estén dentro de un bucle o de un if o de un procedimiento y que nunca pase por ahí.

Toni 10-11-2011 19:20:11

Hola,

Yo hace ya tiempo me encontre con el siguiente problema utilizando extractfilepath y una api de window que te retorna el path. Al igual que tu tenia un programa que funcionaba hace tiempo y en muchas maquinas, pero cuando lo copie en un servidor ya no me funcionaba bien. La cuestion es que en segun que versiones de windows el extractfilepath y la api correspondiente me devolvian la ruta de forma diferente. Es decir en unos casos me devolvian la ruta terminandola con un '\' y en los otros no.

Por eso en el if que tienes que comprueba el fichero no te estaria encontrando el fichero y no se cumpliria la condicion.

Cita:

if fileexists(extractfilepath(xarchivoorig)+xpoliza+'_rec'+ansirightstr(xarchivoorig,4)) then
Por eso al montar la cadena con la ruta + archivo tenia que tener en cuenta los dos casos.

Willo 11-11-2011 17:16:28

Solucion!!
 
como siempre como desarrolladores tendemos a buscarle 3 pies al gato, pensando en lo mas dificil antes de lo mas sencillo...

el problema en si nunca estuvo en el codigo, como mencione (y yo mismo olvide); el programa funcionaba bien antes de que esa maquina fuera formateada y funcionaba bien en 3 maquinas mas!!

La unica variante era que esa maquina tenia una instalacion "fresca" de windows XP...

Pues bien, el problema era que, en la opciones de carpeta de windows XP, estaba seleccionada la opcion "ocultar extensiones de archivos conocidos"!!!!!

Creanme que me senti muy idiota cuando por casualidad (y por que yo siempre configuro mis maquinas asi), quite la marca de esa opcion y funciono el programa.


Le comparto esta experiencia para que como yo, no perdamos de vista que a veces la solucion es mucho mas sencilla de lo que creemos.

thecidmx 27-11-2011 21:41:14

Cita:

Empezado por Willo (Mensaje 418260)
Pues bien, el problema era que, en la opciones de carpeta de windows XP, estaba seleccionada la opcion "ocultar extensiones de archivos conocidos"!!!!!


q raro que sea eso, ya q si la aplicaciones, las distribuyeras, en manera tipo office, ese seria un detalle muy particular, :), pero bueno este mundo informatico es todo un enigma.


La franja horaria es GMT +2. Ahora son las 03:48:12.

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