PDA

Ver la Versión Completa : access violation al actualizar una imagen en un campo blob firebird


Bobybalazo
06-01-2013, 17:42:26
Hola todos, tengo un problema que ya me trae loco.
Estoy haciendo una aplicación que cada cierto tiempo me actualice una imagen que guardo dentro de una tabla en firebird 2.5, la tabla se llama pcs, el campo que debo actualizar se llama img.

En el código que muestro abajo, tal como está se ejecuta perfecto desde un botón, pero si ejecuto desde un timer, que es donde debe ir, entonce me da el siguiente error "Project xxxxx.exe raised exception class EAccessViolation with message 'Access violation at address 00380040. read of address 00380040'

procedure TForm1.Button2Click(Sender: TObject);
var
mem : TMemoryStream;
begin
upq.SQL.Clear;
upq.SQL.Add('update pcs set img = :p1 where pc= '''+pcnombre+'''');
mem:=TMemoryStream.create;
mem.LoadFromFile('captura.jpg');
upq.Params.Clear;
upq.Params.CreateParam(ftBlob,'p1',ptInput);
upq.Params.ParamByName('p1').SetBlobData(mem.Memory,mem.Size);
upq.ExecSQL;
end;

En el timer es asi:

procedure TForm1.Timer2Timer(Sender: TObject);
var
mem : TMemoryStream;
begin
if cap=1 then
begin
upq.SQL.Clear;

upq.SQL.Add('update pcs set img = :p1 where pc= '''+pcnombre+'''');
mem:=TMemoryStream.create;
mem.LoadFromFile('captura.jpg');
upq.Params.Clear;
upq.Params.CreateParam(ftBlob,'p1',ptInput);
upq.Params.ParamByName('p1').SetBlobData(mem.Memory,mem.Size);
upq.ExecSQL;
end;
end;


Nota: estoy usando dbexpress por lo que upq es un sqlquery. upq es exclusivo para esa actualización, osea, no lo uso en ningún otro lugar, ni cambio sus parámetros.

cualquier ayuda o aclaracion les estare imensamente agradecido.

Casimiro Notevi
06-01-2013, 17:51:40
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)?, gracias por tu colaboración :)

Recuerda poner los tags al código fuente, ejemplo:

http://www.clubdelphi.com/images/UtilizarTAGs.png

Gracias :)

mightydragonlor
06-01-2013, 18:59:29
Podría ser que es por que no liberas la variable mem?

Bobybalazo
06-01-2013, 21:06:33
gracias por contestar. Lo probé y sigue dando error.

Casimiro Notevi
06-01-2013, 21:25:44
gracias por contestar. Lo probé y sigue dando error.

¿Y cómo lo has probado?, ¿has leido nuestra guía de estilo?