Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Excepción llamando propiedad (https://www.clubdelphi.com/foros/showthread.php?t=56338)

Guillermo80 14-05-2008 20:47:48

Excepción llamando propiedad
 
Hola, me pasa una excpeción un tanto extraña. Resulta que mi programa principal hace una codificación, pero justo antes de codificar, llamo a una función que me deshabilita (Enabled=false) todos los botones del formulario, y después, cuando termina, llamo a otra que los vuelve a habilitar:
Cita:

procedure TForm1.BtnDecodeClick(Sender: TObject);
begin

DesHabilitaTodo(Sender);
DecodeFile(EditDest.Text, EditFileName.Text);
HabilitaTodo(Sender);

end;
Pues resulta, que todo va bien, pero cuando llama a HabilitaTodo, es cuando salta la siguiente excepción:

Cita:

Project E:\...\programa.exe faulted with message: 'accesviolation at 0x0044cf17: read of address 0x445c3a43'. Process Stopped.
Use Step or Run to continue.
No entiendo por qué ocurre, ya que dehabilita bien, codifica bien, pero al volver a habilitar... ¡ zas, en toda la boca !

Por cierto, DeshabilitaTodo, hace la propiedad de cada boton a Enabled:=false, a todos menos a un botón de Cancelar.

¡¡ HELP !!

roman 14-05-2008 20:51:06

Si el fallo aparece al llamar a HabilitaTodo, quizá sea mejor que pongas el código que usas en ese procedimiento.

// Saludos

coso 14-05-2008 20:52:32

Pon el codigo de 'habilitaTodo'

Guillermo80 14-05-2008 20:59:34

La función no es ningún misterio, y es análoga a DeshabilitaTodo (salvo en el botón de cancelar):

Cita:

procedure TForm1.HabilitaTodo(Sender: TObject);
begin
EditFileName.Enabled := true;
EditDest.Enabled := true;
Button1.Enabled := true;
BtnDecode.Enabled := true;
Titulo.Enabled := true;
Artista.Enabled := true;
Album.Enabled := true;
Fecha.Enabled := true;
Pista.Enabled := true;
Genero.Enabled := true;
CheckBoxVentana.Enabled := true;
CheckVentanas.Enabled := CheckBoxVentana.Checked;
Memo1.Enabled := true;
end;
Asímismo le añadí la cabecera del método arriba en la declaración de cabebceras:

Cita:

procedure TForm1.HabilitaTodo(Sender: TObject);

Guillermo80 14-05-2008 21:01:31

Otro detalle, resulta que si no llamo a HabilitaTodo y hago simplemente:

Cita:

EditFileName.Enabled := true;
...el fallo sigue saliendo.

coso 14-05-2008 21:18:54

mira con el debugger a ver si es q te has cargado algun objeto con la funcion decodefile. O con el Ctrl+F3, para saber donde exactamente te salta la excepcion. A veces tb lo q pasa es q si se sale mucho de algun programa (por excepcion o con el ctrl+f2) se quedan restos en memoria ... se fastidia :confused: prueba entonces de cargar otra vez el delphi...

Ahora q estoy pensando, tienes algun evento onchange en alguno de estos objetos q te pudiese provocar la excepcion?

coso 14-05-2008 21:48:30

y en DecodeFile liberas todos los objetos q creas?

Guillermo80 15-05-2008 15:33:09

A lo que me comentabas:

Cita:

Ahora q estoy pensando, tienes algun evento onchange en alguno de estos objetos q te pudiese provocar la excepcion?
No, no lo tengo.

Cita:

y en DecodeFile liberas todos los objetos q creas?
En principio creo que sí, tendría que analizarlo más minuciosamente tal vez, pero me extraña.

Cita:

Ctrl+F3, para saber donde exactamente te salta la excepcion
Pues la verdad es que salta justo donde te comentaba antes, no entiendo este punto de depuración.

De todas formas he cambiado un poco el diseño y ya no necesito llamar necesariamente a esta función que comento, pero el problema digamos que internamente "sigue ahí".

coso 15-05-2008 22:14:08

>> no necesito llamar necesariamente a esta función que comento

q funcion?

Guillermo80 16-05-2008 18:02:26

Cita:

q funcion?
La que me da el problema, o siendo precisos, lo que dije antes de que cualquier acceso a propiedad de inhabilitación produce excepción.

coso 16-05-2008 20:33:38

pero en q objeto te salta? comprueba antes si es nil (y pq)


La franja horaria es GMT +2. Ahora son las 11:34:17.

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