Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Sistemas operativos > Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-04-2013
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
Aplicacion se cae al cerrar explorer u otro navegador

Otra consulta con respecto a aplicación Delphi 5.
Cada vez que se tiene abierta la aplicación minimizada y se abre un navegador de internet, al cerrar este se cae la aplicación enviando el mensaje de Access Violation.
¿A que se puede deber?
Esto ocurre con cualquier windows y con el navegador Explorer y Google Chrome, no lo he probado con otros.
Responder Con Cita
  #2  
Antiguo 08-04-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Estaría bien saber qué hace la aplicación y si tiene algo que ver con estos programas...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 09-04-2013
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
Son programas contables, pero al parecer debe ser algún componente que estoy utilizando, porque viendo otro programa pequeño que hice para generar codigos de barra no me pasa.
Ahora el problema será investigar cual de los componentes es el que genera el problema. Tendré que hacer un pequeño sistema, agregandole componentes hasta dar con el causante (trabajo de chinos porque son varios).
Cuando lo encuentre les digo, pero si a alguien le ha pasado lo mismo que me evite el trabajito se lo agradeceria.
Responder Con Cita
  #4  
Antiguo 09-04-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.269
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si los comentas tal vez te podamos dar alguna pista de cual puede ser.
Los componentes normales de la VCL no deberían generar estos errores. ¿Algún componente externo?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 09-04-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por vicvil Ver Mensaje
Tendré que hacer un pequeño sistema, agregandole componentes hasta dar con el causante (trabajo de chinos porque son varios).
Una prueba aislada.

Pero considera la alternativa de tener Delphi instalado en esa misma computadora, y ejecutar el programa desde el IDE habiéndolo compilado con las opciones "Debug information" y "Use debug DCUs". Así, cuando el Access Violation ocurra, el depurador te permitirá ver la pila de llamadas (call stack) y con ello descubrir en qué punto del programa se dispara la situación de falla y su posible causa.

Saludos.
Responder Con Cita
  #6  
Antiguo 09-04-2013
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
Al hice la prueba desde delphi como tu lo indicaste, pero no envía ningún mensaje que me de una pista solo aparece "Exception EAccessVoilation in Module Programa.exe at 0007C12C. Access violation at address xxxxx in module Programa.exe. Read of address xxxx" y se cae sin mas.

Los componentes que tengo son de TurboPower, Rx, GNostice, FastReport, CGIExpert.

Ya probé con algunos de ellos en forma individual y no se caen.
Responder Con Cita
  #7  
Antiguo 09-04-2013
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
Ya encontré cual es el componente que me causa el problema, es el componente TStShellTreeView que pertenece a Systools de TurboPower.
Ahora hay que averiguar por que pasa eso.
Responder Con Cita
  #8  
Antiguo 09-04-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por vicvil Ver Mensaje
[...] solo aparece "Exception EAccessVoilation in Module Programa.exe at 0007C12C. Access violation at address xxxxx in module Programa.exe. Read of address xxxx" [...]
No hay que subestimar a esas "x", dicen más de lo que crees.

Cuando te aparezca el mensaje de error puedes presionar la combinación de teclas Ctrl+C para copiarlo al portapapeles y luego mostrarlo aquí.

Y también, muy importante, tras cerrar la ventana de error presiona Ctrl+Alt+S para ver la pila de llamadas, muéstranos ésta por favor. Se trata del camino que siguió tu aplicación hasta ocurrir la excepción.

De preferencia compila con Build, tras asegurarte de marcar el par de opciones que te sugerí anteriormente.

Saludos.
Responder Con Cita
  #9  
Antiguo 09-04-2013
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
---------------------------
Application Error
---------------------------
Exception EAccessViolation in module Project1.exe at 00061069.
Access violation at address 00461069 in module 'Project1.exe'. Read of address 00000004.
---------------------------
Aceptar
---------------------------

Al dar Ctrl+Alt+S aparece un recuadro indicando

Call Stack

Process is not accessible
Responder Con Cita
  #10  
Antiguo 09-04-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por vicvil Ver Mensaje
Read of address 00000004.
Es muy probablemente por un objeto Nil, intento de leer algún elemento de una instancia de objeto no creada.

Cita:
Empezado por vicvil Ver Mensaje
Call Stack

Process is not accessible
Esto puede ser porque el programa ya no está en ejecución (no lo cierres / termines cuando aparezca el error).

Última edición por Al González fecha: 09-04-2013 a las 23:31:22.
Responder Con Cita
  #11  
Antiguo 10-04-2013
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
Al el mensaje de "Process is not accesible" aparece aun cuando el programa no ha sido cerrado.
Ahora bien, como te dije anteriormente, el problema se da en el componente ShellTreeview en el evento ShellEvent, al parecer es una pifia del componente. Si no logro arreglarlo voy a tener que buscar un componente similar (que no he encontrado) o generar código que haga algo similar.
Responder Con Cita
  #12  
Antiguo 10-04-2013
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
Talking

Encontré la solución, era una falla del componente.
Solo agregué un try except end en un parrafo del evento ShellEvent, lo probé y ya no se cayó el sistema.

if ((neFolderDelete in Events) or (neDriveRemove in Events)
or ((neFileDelete in Events) and (toShowFiles in Options))) then begin
{ A folder was deleted. See if it is one we have in the list. }
Node := FindNodeByPidl(SI1.Pidl);
if Node = nil then
Node := FindNodeByPath(SI1.Path);
if Selected = Node then
try
Selected := Node.GetNext;
except
end;


Espero le sirva de ayuda por si a alguien le ocurre lo mismo.
Responder Con Cita
  #13  
Antiguo 10-04-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Que bueno que lograste encontrar la causa, y gracias por mostrarla.

Un mejor parche podría ser (para el último de esos Ifs):
Código Delphi [-]
If (Node <> Nil) And (Selected = Node) Then
  Selected := Node.GetNext;
En lugar de reprimir la excepción, la evita.

Entonces Node era el objeto Nil en cuestión. La ejecución del método GetNext intentaba leer el primero de sus campos (desplazamiento 4).
Responder Con Cita
  #14  
Antiguo 10-04-2013
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 157
Poder: 21
vicvil Va por buen camino
Al puse la excepción como una forma rápida de salir del paso y me funcionó bien, pero voy a probar lo que tu me dices y te cuento.
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
¿Como cerrar el explorer.exe desde el que se llamó a mi aplicación? jumasuro API de Windows 0 08-02-2007 20:54:50
Descargar y ejecutar aplicacion desde el navegador coulthard Linux 0 23-12-2004 18:40:08
Cerrar mi programa desde otro Sr_Sombrero API de Windows 2 02-12-2004 22:12:09
Cerrar el Navegador de Internet barrauda API de Windows 2 19-11-2004 15:47:18
Abrir navegador desde mi aplicacion pampitasnowman Internet 1 28-11-2003 15:06:44


La franja horaria es GMT +2. Ahora son las 00:59:23.


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