Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Sistemas operativos > Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
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.610
Poder: 32
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
  #2  
Antiguo 09-04-2013
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 160
Poder: 24
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
  #3  
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.610
Poder: 32
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
  #4  
Antiguo 10-04-2013
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 160
Poder: 24
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
  #5  
Antiguo 10-04-2013
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 160
Poder: 24
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
  #6  
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.610
Poder: 32
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
  #7  
Antiguo 10-04-2013
vicvil vicvil is offline
Miembro
 
Registrado: may 2003
Ubicación: Chile
Posts: 160
Poder: 24
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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 23:46:34.


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
Copyright 1996-2007 Club Delphi