PDA

Ver la Versión Completa : aplicacion inestable en delphi7


erickperez6
15-08-2013, 02:30:31
Saludos,

No se que titulo ponerle al tema, asi que por la "inestabilidad" y el comportamiento extraño que tiene mi aplicacion sin conocer la causa real me llevo a este titulo.

Sucede que tengo una aplicacion muy grande con algunas 250 formas y algunos 5 componentes de terceros (rusas, raize, cnpack, fibplus y fastreport), desde hace un tiempo hasta el dia de hoy, cuando compilo la aplicacion para generar mi nuevo ejecutable se me esta presentando un comportamiento extraño en el sistema, errores que no le encuentro explicacion, solo se me ocurre que es un problema con el IDE de delphi 7 o algun bug de los componentes de tercero, por ejemplo:

Se me presenta un EAccessviolation abriendo algunas formas o al momento de cerrar la aplicacion. Como sabemos este error comunmente sucede cuando intentamos de acceder a un objeto que no esta creado o al tratar de destruir un objeto que ya no existe, pero nada de esto esta sucediendo, a veces compilo la aplicacion varias veces y uno de los ejecutable que me genera delphi no me da los errores pero los demas si. Por lo general tengo que generar el proyecto completo por el menu Project - Build MiSistema o de otro modo el ejecutable siempre estara lleno de los EAccessviolation, pero no siempre esta medicina me funciona ya que ultimamente no se estan desapareciendo los EAccessviolation por mas que genere el proyecto, incluso hasta para cerrar el IDE de delphi en algunas ocasiones, no lo puedo hacer porque me presenta un EAccessviolation para cerrarlo, y tengo que matar el proceso para cerrar la ventana de delphi :confused:

Encima del problema anterior, existe una funcion que utilizo mucho en casi todas las formas, en la cual le paso un string como parametro, resulta que en algunos formularios la primera vez que invoco la funcion, el valor del string aparece truncado, es decir, no es el mismo que le envio, en el segundo intento si toma el valor que le estoy pasando, por ejemplo:

a := mifuncion('hola');

la funcion no recibe el string 'hola', sino caracteres desconocidos '@#$@#$^', en el segundo intento si toma el valor correcto.

No se a que se debe esta inestabilidad de la aplicacion, tengo dos computadores con el mismo ambiente instalado, y los dos hacen lo mismo. Antes cuando la aplicacion era un poco mas pequeña no sucedian estos errores, pero con el tiempo han comenzado aparecer, al principio lo solucionaba pero ahora la solucion aplicada no siempre me da resultados. Que me pueden sugerir que pruebe?

donald shimoda
15-08-2013, 03:33:59
Saludos,

No se que titulo ponerle al tema, asi que por la "inestabilidad" y el comportamiento extraño que tiene mi aplicacion sin conocer la causa real me llevo a este titulo.


Por todo lo que comentas lios con las colas.

te recomiendo que cada form que crees lo hagas cuando lo necesites y luego lo liberes. Imagino que los estas creando al iniciar la aplicación, verdad?

Saludos.

erickperez6
15-08-2013, 06:47:13
Por todo lo que comentas lios con las colas.

te recomiendo que cada form que crees lo hagas cuando lo necesites y luego lo liberes. Imagino que los estas creando al iniciar la aplicación, verdad?

Saludos.

Asi mismo lo tengo, todas las formas se crean y se destruyen conforme las voy necesitando

nlsgarcia
15-08-2013, 08:21:44
erickperez6,



...tengo una aplicacion muy grande con algunas 250 formas y algunos 5 componentes de terceros...

...todas las formas se crean y se destruyen conforme las voy necesitando...

...Se me presenta un EAccessviolation abriendo algunas formas o al momento de cerrar la aplicacion...

...existe una funcion que utilizo mucho en casi todas las formas...le paso un string como parametro...la funcion no recibe el string...en el segundo intento si toma el valor...

...cuando la aplicacion era un poco mas pequeña no sucedian estos errores...

...tengo dos computadores con el mismo ambiente instalado, y los dos hacen lo mismo...

...se me ocurre que es un problema con el IDE de Delphi 7 o algun bug de los componentes de tercero...

...a veces compilo la aplicacion varias veces y uno de los ejecutable que me genera Delphi no me da los errores pero los demas si...

Pregunto:

1- ¿El problema de EAccessviolation ocurre de la misma manera con otras aplicaciones?.

2- ¿El problema mencionado se presenta siempre en el mismo conjunto de Forms o es aleatorio el Form donde ocurre la falla?.

3- ¿Existe alguna unidad que sea común a todos los forms que por su volumen sea candidata a ser dividida en unidades más especializadas?.

4- ¿La versión de Windows instalada esta actualizada a nivel de Updates y Service Pack?, ¿Que versión de Windows utilizas?.

5- ¿Que programa de seguridad utilizas?, ¿La falla se presenta si el programa de seguridad esta deshabilitado?.

6- ¿Si realizas un boot de Windows en modo Diagnostics y compilas la aplicación ocurre la falla mencionada?.

7- ¿Haz verificado el hardware de las máquinas en cuestión, específicamente Memoria RAM y Unidades de Almacenamiento?.

8- ¿Cuanta Memoria RAM tienen las máquinas en cuestión?.

9- ¿A que te refieres exactamente cuando mencionas que la falla no se presentaba cuando la aplicación era más pequeña?.

Espero sea útil :)

Nelson.

Casimiro Notevi
15-08-2013, 10:21:04
Está claro que es un error (o errores) en tu programa.
Yo he estado más de 10 años trabajando con una aplicación delphi 5+ibx+firebird con más de 1000 pantallas (forms) y muchísimos componentes variados y nunca hemos tenido ningún problema con delphi.
Al mismo tiempo con otros programas en delphi 7, también bastante grandes. Y finalmente con delphi 2007 (ahí me he quedado) con proyectos bastante "gordos" también y esos errores nunca han aparecido.

De todas formas, está claro que es lo que te han comentado, esas variables están apuntando a un trozo memoria que "alguien o algo" se la ha machacado.

erickperez6
15-08-2013, 14:30:32
1- ¿El problema de EAccessviolation ocurre de la misma manera con otras aplicaciones?.


No, solo en esta aplicacion


2- ¿El problema mencionado se presenta siempre en el mismo conjunto de Forms o es aleatorio el Form donde ocurre la falla?.


Es aleatorio


3- ¿Existe alguna unidad que sea común a todos los forms que por su volumen sea candidata a ser dividida en unidades más especializadas?.


Hay una o dos unidades que estan presente en muchos forms, pero no en todos, tampoco son muy grandes.


4- ¿La versión de Windows instalada esta actualizada a nivel de Updates y Service Pack?, ¿Que versión de Windows utilizas?.


Debo verificar si estan actualizadas, no me he percatado de esto


5- ¿Que programa de seguridad utilizas?, ¿La falla se presenta si el programa de seguridad esta deshabilitado?.


Utilizo una unidad de seguridad casera, hecha por mi, no se me ha ocurrido deshabilitarla todavia


6- ¿Si realizas un boot de Windows en modo Diagnostics y compilas la aplicación ocurre la falla mencionada?.


Necesito probar esto


7- ¿Haz verificado el hardware de las máquinas en cuestión, específicamente Memoria RAM y Unidades de Almacenamiento?.
ocurre la falla mencionada[/I][/U][/COLOR]?.


Como tengo dos computadores con el mismo ambiente instalado, los cuales tienen hardware muy diferente, no creo que el problema este en esa direccion


8- ¿Cuanta Memoria RAM tienen las máquinas en cuestión?.


Un equipo tiene 4GB y el otro 3GB


9- ¿A que te refieres exactamente cuando mencionas que la falla no se presentaba cuando la aplicación era más pequeña?.


Cuando habian menos forms, menos lineas de codigo, hace unos meses atras, no veia estas clases de problema.


Espero sea útil :)

Nelson.

Gracias

erickperez6
15-08-2013, 14:34:06
Está claro que es un error (o errores) en tu programa.
Yo he estado más de 10 años trabajando con una aplicación delphi 5+ibx+firebird con más de 1000 pantallas (forms) y muchísimos componentes variados y nunca hemos tenido ningún problema con delphi.
Al mismo tiempo con otros programas en delphi 7, también bastante grandes. Y finalmente con delphi 2007 (ahí me he quedado) con proyectos bastante "gordos" también y esos errores nunca han aparecido.

De todas formas, está claro que es lo que te han comentado, esas variables están apuntando a un trozo memoria que "alguien o algo" se la ha machacado.

Estoy de acuerdo que el problema esta en la aplicacion en especifico que hace que el IDE de delphi se vuelva inestable y la misma aplicacion tambien

nlsgarcia
15-08-2013, 20:09:42
erickperez6,


...Estoy de acuerdo que el problema esta en la aplicacion en especifico que hace que el IDE de Delphi se vuelva inestable y la misma aplicacion tambien...


Te comento:

1- Al parecer algo esta interfiriendo de forma aleatoria en el proceso de compilación y/o ejecución produciendo el error de EAccessviolation, el hecho de que algunas veces se logre compilar y ejecutar la aplicación y otras no sin hacer ninguna modificación sugiere un elemento externo que afecta el proceso de compilación más que el código en si mismo, si el problema fuera el código el error siempre estaría presente en tiempo de compilación o ejecución, sin embargo no se puede descartar esta variable, pregunto : ¿Tu aplicación utiliza apuntadores?.

2- El programa de seguridad casero, un servicio u otro programa activo al momento de la compilación son candidatos probables que pueden afectar aleatoriamente el proceso de compilación, si se hace un boot de Windows en modo Diagnostics y se compila la aplicación sin que este activo ningún otro programa se pueden descartar elementos externos, quedando solo por analizar Windows, Delphi 7 y la aplicación.

3- Para descartar problemas del IDE es conveniente reinstalar Delphi 7 en modo Repair, así como reinstalar los componentes de terceros (Del más probable al menos probable en relación a la falla), todo lo anterior de forma progresiva probando en cada caso la compilación de la aplicación y su comportamiento.

4- Sería conveniente analizar los mensajes del compilador y ver si hay diferencia entre la versión compilada que funciona y la que produce la falla, quizás haya algún Warning que sugiera el origen de la falla.

5- Otro punto a considerar es aislar (Comentar) partes del código al momento de la compilación para analizar su relación con la falla descrita.

6- Para finalizar te sugiero considerar una aplicación de seguridad como NIS 2013 (http://us.norton.com/internet-security/?inid=us_ghp_hho_trybuy_nnis&om_ext_cid=hho_ext_symcom_nortoncom_trybuy_nnis), la cual tiene mucho tiempo en el mercado, es reconocida mundialmente y tiene poco impacto en el sistema ademas de contar con actualizaciones constantes, esto permitiría descartar probables problemas de Malware que puedan estar relacionados con la falla en cuestión.

Espero sea útil :)

Nelson.

JXJ
17-08-2013, 03:56:14
instala el componente eurekalog

para que sepas por que parte de tu codigo se dan los errores.