xobius
11-02-2004, 16:21:16
hola a todos.
Estoy utilizando el componente Tmysql, con el cual quiero cargar una
imagen jpg en un campo Blob.
para ello el copmponente posee un metodo como el siguiente:
Mysql.modify.add('nombredelcampo',pchar(''''+cadena de texto+'''');
para luego utilizar el metodo prepare insert y execute.
De esa manera se carga cualquier campo.
Como necesito cargar una imagen utilizo la clase TMemoryStream, al
cual asigno la imagen del siguiente modo:
imagen:=jpeg.create; (definida en var como imagen:tgraphic;//incluyo
en la clausula uses la unidad jpeg)
imagen.loadfromfile('directrio/archivo.jpg');
//Para luego asignarselo al Stream asi
Stream:=TMemoryStream.create; (definida en var como
Stream:TMemoryStream)
imagen.savetostream(stream);
//Aqui vienen los problemas
// como necesito cargar los datos en un buffer lo hago del siguiente
modo
new(buffer); // definida en var como buffer:pchar
block:=stream.size+1; //entero
buffer:=AllocMem(block);
//finalmente
stream.readbuff(buffer,stream.size);
aqui es donde salta una excepcion que me indica que la carga se
realiza de manera incorrecta.
He probado con otros tipos de TStream (TFileStream para ser presiso)
y me continua dando el mismo error.
Ya he intentado todo lo que se me ha ocurrido sin lograr hacerlo
funcionar.
Si alguien conoce como usar la clase TStream u otra manera de ingresar
imgenes en campos blob agradeceria su ayuda.
saludos.
Jose
Estoy utilizando el componente Tmysql, con el cual quiero cargar una
imagen jpg en un campo Blob.
para ello el copmponente posee un metodo como el siguiente:
Mysql.modify.add('nombredelcampo',pchar(''''+cadena de texto+'''');
para luego utilizar el metodo prepare insert y execute.
De esa manera se carga cualquier campo.
Como necesito cargar una imagen utilizo la clase TMemoryStream, al
cual asigno la imagen del siguiente modo:
imagen:=jpeg.create; (definida en var como imagen:tgraphic;//incluyo
en la clausula uses la unidad jpeg)
imagen.loadfromfile('directrio/archivo.jpg');
//Para luego asignarselo al Stream asi
Stream:=TMemoryStream.create; (definida en var como
Stream:TMemoryStream)
imagen.savetostream(stream);
//Aqui vienen los problemas
// como necesito cargar los datos en un buffer lo hago del siguiente
modo
new(buffer); // definida en var como buffer:pchar
block:=stream.size+1; //entero
buffer:=AllocMem(block);
//finalmente
stream.readbuff(buffer,stream.size);
aqui es donde salta una excepcion que me indica que la carga se
realiza de manera incorrecta.
He probado con otros tipos de TStream (TFileStream para ser presiso)
y me continua dando el mismo error.
Ya he intentado todo lo que se me ha ocurrido sin lograr hacerlo
funcionar.
Si alguien conoce como usar la clase TStream u otra manera de ingresar
imgenes en campos blob agradeceria su ayuda.
saludos.
Jose