PDA

Ver la Versión Completa : Acceso denegado


sur-se
21-04-2004, 14:01:03
Hola. Estoy programando en Delphi 5. De vez en cuando, cuando se ejecuta el programa y se abre una nueva pantalla en modal me aparece la excepción de error "Acceso denegado". Si lo aceptamos y continuamos volviendo a intentar entra en la pantalla ya no lo da. Me occure tanto si lo ejecuto desde el delphi como fuera de él, y no siempre con el mismo formulario, sino de forma aleatoria. Trato de ver con el delphi en que punto del programa se produce el error, pero es imposible verlo ni saber de donde viene esa excepción.
He añadido por el programa instrucciones para liberar memoria virtual por si el problema venía de ahí. Además he revisado que todos los objetos que se crean son destruidos y no se queda por ahí ninguno colgado.
La aplicación es MDI pero tiene algunas ventanas Modales, aunque el mensaje también aparece a veces con las ventanas no modales.

¿De donde procede esa excepción?
Gracias.

roman
21-04-2004, 16:45:23
Es muy poca la información que das ya que no sabemos en absoluto qué hacen tus formularios. El error tiene toda la pinta de un error de sistema operativo que se genera cuando se intenta acceder a un archivo que está en uso en modo exclusivo. Quizá si especificas más qué hacen tus formularios tengamos una mejor idea.

// Saludos

sur-se
21-04-2004, 17:52:16
Hola. Las pantallas que se abren sólo solicitan datos, es decir son TEdit y bitbtns. El evento OnCreate de esas pantallas no tiene nada, ni el OnActivate. He comprobado que se van liberando los recursos también utilizado una librería que realiza ese chequeo (snoop) de forma automática.
Tengo puesto un TApplicationEvents que captura las excepciones que no han sido manejadas localmente y da ese mensaje de error "Acceso denegado" Además, lo que me extraña es que no me de el mensaje en inglés que es lo habitual cuando se produce una excepción (y no he cambiado los errores del delphi a español).
Lo que me gustaría saber es a que se refiere la excepción "acceso denegado". ¿Acceso denegado a qué?. No encuentro información sobre eso.

Gracias.

sur-se
21-04-2004, 17:57:48
Otra cosa más, también tengo puesto por el programa las llamadas a esta función:

// By Ian Marteens (libera memoria viartual que no se utiliza)
procedure TModuloDatos.LiberarMemoria;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFFFF, $FFFFFFFF);
end;

Salu2.

roman
21-04-2004, 18:07:53
¿Has probado deshabilitar temporalmente esta función para ver si es la causante? El mensaje, por lo mismo que dices de que no has traducido ningún recurso de Delphi suena a provenir del sistema y supongo que si tu Windows está en español de ahí que el mensaje salga en español.

// Saludos

jachguate
21-04-2004, 21:55:11
Algo que te puede arrojar una luz, es la clase de la excepción que se ha elevado, que en el evento OnException viene en el parámetro E, y que podes averiguar consultando su propiedad ClassName.

Hasta luego.

;)