PDA

Ver la Versión Completa : Generar una Excepción Try Catch para una Imagen.


samael205
28-03-2012, 12:33:27
Hola, que hay de nuevo?
Tengo el siguiente problema,
tengo una Base de datos, y una tabla, uno de los campos de esa tabla es de tipo VARCHAR que continen la ruta de una imagen.
He conseguido hacer que la imagen se muestre cada vez que que se cambia de tupla seleccionada.
Pero ahora necesito una exepción que me compruebe que la ruta de la imagen es correcta, si lo es que muestre la imagen,
Si no que no aga nada,
Me podeis dar algun ejemplo, que en delphi no se como crear Excepciones Gracias.

duilioisola
28-03-2012, 12:53:31
Para empezar mira esto (http://www.delphibasics.co.uk/RTL.asp?Name=FileExists&ExpandCode1=Yes) para comporbar si el fichero con la imagen existe o no.
Luego puedes generar una excepción siguiendo este link (http://www.delphibasics.co.uk/RTL.asp?Name=Raise)
Quedaría algo así:

if (not FileExists(ArchivoConImagen))
then Raise Exception.CreateFmt('No encuentro el archivo de imagen : ''%s''', [ArchivoConImagen]);

duilioisola
28-03-2012, 13:07:05
Buscando un poco más he encontrado esto que puede quedar mejor:

var
E: EInOutError;
...
if (not FileExists(ArchivoConImagen)) then
begin
E := EInOutError.Create( 'No encuentro el archivo de imagen : ''%s''', [ArchivoConImagen] );
// El codigo de error para este tipo de excepcion puede tener estos valores (Help de Delphi 6)
// 2 File not found
// 3 Path not found
// 5 Access denied
// 32 Sharing violation
E.Errorcode := 2;
raise E;
end;


Puedes leer un poco más sobre excepciones aqui (http://zarza.fis.usal.es/~fgarcia/docencia/poo/01-02/trabajos/S2T5.pdf).

samael205
28-03-2012, 16:48:05
Gracias por tu consejo, me ha funcionado, Bastaba con el if FileExistst.
ahora bien,

Tengo un formulari y un Datamodule, El formulario contiene el TImage y el Datamodule la correspondiente base de datos con la tabla que contiene la ruta de la imagen.

He tenido que crear una Tabla Mastersource en el Formulario que referencie a la tabla del dataModule para obtener la imagen.
El problema esta en que el evento se ejecuta una accion mas tarde de lo habitual.
Es decir Cambio coche para ver los datos del siguiente coche pero la imagen no carga, se queda la misma, pero vuelvo a cambiar de coche y cambia la imagen por el ultimo registro del que estoy ahora. es decir

Estoy en 1

muestra 1

cambio a 2

muestra 1

Cambio a 3
Me muestra 2

Cambio a dos
Me muestra 3

No se si me he explicado bien. ¿Como puedo Solucionar este problema?

Esto no lo he podido hacer de otra manera, he intentado desde el AfterInsert de la tabla de origen en el DataModule modificar el LoadFromFile de Picture, pero al hacerlo desde El DM me dice acces violation. Como puedo encontrar solución a esto???.

duilioisola
28-03-2012, 17:03:03
Abre otro hilo para esto, por favor.
Es una pregunta totalmente distinta y no tiene que ver con lo que estamos tratando ahora.

Gracias