Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error al buscar archivo que si existe (https://www.clubdelphi.com/foros/showthread.php?t=65932)

b3nshi 22-01-2010 16:04:29

Error al buscar archivo que si existe
 
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:
Código Delphi [-]
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:

Código Delphi [-]
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?...

Código Delphi [-]
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

Cita:

Empezado por delphi.com.ar (Mensaje 351541)
¿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

Cita:

Empezado por roman (Mensaje 351549)
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.


La franja horaria es GMT +2. Ahora son las 21:23:31.

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