Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-07-2006
Torreblanca Torreblanca is offline
Miembro
 
Registrado: jul 2005
Ubicación: Veracruz México
Posts: 52
Poder: 19
Torreblanca Va por buen camino
No me sale el manejo de excepciones

Hola a todos:

Tengo el siguiente problemita, en realidad nunca he usado las excepciones en algún problema en delphi y necesito de su ayuda: ya he buscado en los foro, leido el libro de Ian Marteens y entendi pero no me sale

Mi duda es la siguiente:

Tengo un campo en la tabla Empleados en donde se almacena la ubicación de la imagen del empleado. Con el siguiente código muestro la imagen del empleado en caso de que exista el registro en la base de datos:

Código Delphi [-] if not (Datamodule1.QueryGenerico.Fields[13].AsString = '') then begin FrmEmpleadosD.Imagen.Visible:=true; FrmEmpleadosD.Imagen.Picture.LoadFromFile(Datamodule1.QueryGenerico.FieldValues['img_empleados']); end;



Pero por si alguna razón la imagen es borrada, eliminada, etc. Al ejecutar el programa muestra un error :
Código:
exception class EFOpenError with message ‘Cannot open file “C:imágenes\empleado12.jpg”’.
Lo que he tratado pero no me ha salido es usar el manejo de excepciones con try ... except para que si no encuentra la imagen, el sistema mande un mensaje de error personalizado y de ser posible borre la entrada errónea en la BD (esa es otra historia),


Estoy usando Delphi 7 y Access y la conecto mendiante ADO. Gracias de antemano por ayudarme.



Responder Con Cita
  #2  
Antiguo 11-07-2006
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Buenas!

Ten en cuenta que si estás ejecutando el programa desde el IDE te va a saltar la excepción como si no estuviera controlada, prueba ejecutando directamente el exe fuera del IDE y verás el comportamiento exacto.

En principio el manejo de excepciones deberá ser:

Código Delphi [-]
  try
     < Código con posible excepción >
  except
     showmessage('ha ocurrido un error');
     < Otras acciones  >
  end


Un saludo

Edu
Responder Con Cita
  #3  
Antiguo 11-07-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Vayamos por partes:

Lo primero es definir nuestras propias excepciones, a mí me gusta hacerlo para cada proyecto:
Código Delphi [-]
type 
   EMiProyecto = class (Exception);
Esto lo ponemos en alguna unidad que se use en todo el proyecto, para tenerla a mano.

Cuando queremos lanzar una Excepción usamos:
Código Delphi [-]
raise EMiProyecto.Create('Mensaje de la Excepción');

Para el caso concreto, entre otras formas, podemos hacerlo así:
Código Delphi [-]
if not (Datamodule1.QueryGenerico.Fields[13].AsString = '') then begin 
try
  FrmEmpleadosD.Imagen.Picture.LoadFromFile(Datamodule1.QueryGenerico.FieldValues['img_empleados']); 
except
On E:Exception do //para cualquier excepción
  raise EMiProyecto.CreateFmt(' el archivo %s no puede cargarse', 
                         Datamodule1.QueryGenerico.Fields[13].AsString );
FrmEmpleadosD.Imagen.Visible:=true;
end;

Como sabes, al producirse una excepción se corta la ejecución del programa justo en la línea "raise ..." por tanto, en el caso de que no se encuentre la imagen, no se hará visible el TImage.

Cuando el archivo se encuentre, pues se obvia las lineas del manejo de excepciones y despues sí se hará visible.

Si te fijas en el mensaje de la excepción, no digo que no se ha encontrado la imagen, sino que no puede cargarse. El método LoadFromFile puede que lance un error de "formato de imagen no válida" en lugar del tipico "no se encuentra el archivo".

Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 11-07-2006
Torreblanca Torreblanca is offline
Miembro
 
Registrado: jul 2005
Ubicación: Veracruz México
Posts: 52
Poder: 19
Torreblanca Va por buen camino
Thumbs up Ya salio

Gracias Lepe y Edu ambas respuestas me aclararon mucho este asunto sobre las excepciones y pos ya le entendi completamente al manejo de excepciones gracias a Lepe, y sin tu comentario Edu habria seguido frustrado pensando en que no salia jajaja

Saludos desde El bello puerto de Veracruz!!!

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
manejo de excepciones try y except no funciona gulder Conexión con bases de datos 4 10-11-2005 14:50:00
manejo de excepciones el_barto Varios 4 08-06-2005 09:48:36
Ayuda con Manejo de Excepciones buffygcs SQL 2 21-04-2005 17:52:09
query report ¿Por q sale sale solo el primer registro? acl_gandalf Impresión 2 31-03-2005 02:14:20


La franja horaria es GMT +2. Ahora son las 13:39:42.


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