Recuperando una imagen de SQL Server da error
Disculpen si el tema es comun, pero he estado buscando en el foro y no logro resolver mi problema.
Estoy trabajando con imagenes en bases de datos y las inserciones las hace normalmente, pero al momento de recuperar una imagen es donde caigo en un problema: Código:
TMemoryStream *ima = new TMemoryStream; Código:
Access Violation at addres 004EF3F2 in module 'Proyect1.exe'. Read of address 00000000. |
Hola ginkaku.
Una consulta, ¿ Que tipo de imágenes fueron guardadas en el campo "imagen" (BMP, JPG, ...) ? Saludos :) |
imagenes del tipo BMP ecfisa, estoy pensando en cambiar a delphi y en cambiar tambien el gestor de bases de datos...:(. No logro recuperar la imagen es muy raro
|
Bueno nunca hay que darse por vencido, encontre el problema. Estaba obteniendo bien la imagen de la base de datos, pero tenia que pasarlo a una variable de tipo Bitmap, para recien pasarlo a un componente TImagen. Entonces la solución fue:
Código:
void __fastcall TForm1::Button2Click(TObject *Sender) |
Hola gingaku.
Te preguntaba el tipo por que TGraphic no puede saber el tipo de imagen almacenada (tanto en C++ como en Delphi). Por lo que si guardas mas de un tipo de imágen, habría que crear un campo adicional para indicarlo, poder evaluarlo y hacer la asignación correspondiente. Volviendo al BMP :), también podes hacer: Código:
void __fastcall TForm1::Button1Click(TObject *Sender) |
Gracias por el codigo lo voy a revisar ahora. Disculpa ecfisa, todo funciona perfecto pero solo cuando trabajo con imagenes bmp. Bueno en realidad si logra insertar jpeg, pero es el codigo de recuperar el q me falla, obviamente por la variable Graphic::TBitmap que no acepta los jpeg, ¿que tipo de variable deberia colocar para recuperar un jpeg? Intente con TJpegImage pero no tiene LoadFromStream, la cual uso para asignar. Alguien en el foro me podria guiar?
|
Hola ginkaku.
Una de las opciones, la mas simple a mi modo de ver, es que guardes conjuntamente con la imagen, el tipo de la misma en otro campo creado en la tabla a ese efecto. Supongamos que tenes los campos "IMAGE" y "IMGTYPE", este último de tipo entero en los que arbitrariamente voy a considerar 0=BMP, 1=JPG, ..., entonces aprovechando el polimorfismo podrías hacer: Código:
... Saludos :) |
v:-)vv:-)vv:-)vv:-)vv:-)vv:-)vv:-)v
Totalmente de acuerdo ecfisa, muchisimas gracias, funciona de maravilla ese codigo. Inclusive ya no tengo que usar una variable de tipo TStream, recupera perfectamente las imagenes de cualquier tipo de la base de datos y es mas entendible para mi.#:-)##:-)# Nuevamente gracias por la pronta colaboración. |
La franja horaria es GMT +2. Ahora son las 23:49:35. |
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