PDA

Ver la Versión Completa : Error al buscar archivo que si existe


b3nshi
22-01-2010, 16:04:29
Buen medio dia a todos...

Les cuento un error curioso, va... digo curioso porq no se porq ocurre...

Veamos... hice un programa que inicialmente verifica la existencia de un archivo de configuracion: conf.ini. Si no lo encuentra da un mensaje de error y cierra la aplicacion.

Para leer la ubicacion del archivo hago lo siguiente:

if not fileexists(ExtractFilePath(Application.ExeName) + 'conf.ini') then
begin
showmessage('Aplicacion Dañada!');
application.terminate;
end;


El tema es que tengo 2 PC's con Windows XP, en la PC1 lo tengo funcionando muy bien al programa, lo abro sin problemas.
Pero en PC2 me paso que bien lo instale, funcionaba, y dsp dejo de funcionar dandome el error de aplicacion dañada.

En ambas PC's esta en la ruta: "c:/archivos de programa/sistema"
y existe el archivo.

En PC2 ahora que no funcionaba, lo que hice fue copiarla a la carpeta al escritorio, y se ejecuto correctamente.

Pienso q el problema no es por el largo de la ruta, ya que estando en el escritorio la ruta seria algo asi:
"c:/documents and settings/usuario/escritorio/sistema"
La cual es mucho mas larga.

Y lo que mas extraño me parece es que no tiene virus, y estoy usando una cuenta administrador.

Alguna idea de porque puede estar ocurriendo esto?

Desde ya muy agradecido!

{Saludos}

delphi.com.ar
22-01-2010, 16:19:47
¿No es posible que el "default path" de la aplicación sea otro?.. o sea que se este ejecutando mediante un acceso directo donde se definió otro default path.

Te recomendaría sera algo mas amplio en el mensaje de error, por ejemplo:


ShowMessageFmt('Aplicacion Dañada!'#13#10'No se encontró el archivo de configuración: %s',
[ExtractFilePath(Application.ExeName) + 'conf.ini']);


Saludos!

jhonny
22-01-2010, 16:19:58
Pues si, es muy curioso, ¿sucede lo mismo si intentas hacerlo asi?...

if not fileexists('conf.ini') then
begin
showmessage('Aplicacion Dañada!');
application.terminate;
end;

Aunque lo que dice delphi.com.ar, me parece bastante probable.

roman
22-01-2010, 16:31:47
¿No es posible que el "default path" de la aplicación sea otro?.. o sea que se este ejecutando mediante un acceso directo donde se definió otro default path.

Pero eso no debería afectar. ExtractFilePath(Application.ExeName) no depende de la carpeta por defecto.

// Saludos

delphi.com.ar
22-01-2010, 16:39:14
Pero eso no debería afectar. ExtractFilePath(Application.ExeName) no depende de la carpeta por defecto.

Pues... como siempre tienes razón!... Me he tomado la costumbre de no usar el ExeName por programar en VB, ya que cuando ejecutas la aplicación en Debug como esta siendo interpretada por el IDE no tienes toda la info, solo el nombre del posible ejecutable :S
Posiblemente sea un problema de permisos sobre el archivo...
Igualmente lo que me interesaba decir, y me quedé algo corto por eso continúo, es que no tomemos como desarrolladores la mala costumbre de ocultar al máximo los errores que producen nuestras aplicaciones, es una práctica que he visto con asiduidad, y dar soporte sobre aplicaciones que solo dicen "ha sucedido un error", resulta engorroso al máximo.

Saludos!

jhonny
22-01-2010, 16:47:15
Opps, es verdad, pero entonces a mi en lo particular, no se me acurre que pueda ser :confused:.

b3nshi
22-01-2010, 18:19:18
Muchas gracias por sus respuestas...

Tenes muchas razon con lo de ocultar errores, pero te cuento que en mi caso, siempre al final de un proyecto, coloco una aplicacion que sirve para detectar errores, es decir, conociendo los errores que puede dar mi programa, este aplicativo te detalla los errores y te sugiere posibles maneras de solucionarlo. En este caso, es una aplicacion de administracion que la estoy desarrollando y es por eso que no habia creado todavia el "Solucionador de Errores".

Ahora lo hice... y ya les cuento si encuentro la solucion viendo mas detalladas las cosas.

{Saludos}

b3nshi
22-01-2010, 18:49:28
Hola nuevamente...

Estuve probando, y aparentemente no es un problema de permisos...

Ahora dejo de funcionar la copia que tenia en el escritorio tambien.

Lo mas extraño es que la ruta que me devuelve es correcta! Es decir, yo veo el archivo en el explorador de windows.

Lo que hago ahora es, crear nuevamente el archivo de configuración, y si lo pruebo inmediatamente despues, funciona... despues de un rato deja de funcionar.

El antivirus no detecto ningun virus (NOD32, AntiMalware), pero empiezo a creer que tiene q ser eso no?

Uds diran que opinan...

{Saludos}

coso
23-01-2010, 18:58:58
Hola,
a mi lo unico que se me ocurre es que tengas un error de disco, y los sectores donde se esta escribiendo esten dañados o tengan algun problema. Prueba de hacer un defrag y un scandisk, o bien ejecutarlo desde un usb u otro disco duro a ver si sigues teniendo el problema... saludos.