Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   access violation al actualizar una imagen en un campo blob firebird (https://www.clubdelphi.com/foros/showthread.php?t=81935)

Bobybalazo 06-01-2013 17:42:26

access violation al actualizar una imagen en un campo blob firebird
 
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'

Código Delphi [-]
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:

Código Delphi [-]
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?, gracias por tu colaboración :)

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



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

Cita:

Empezado por Bobybalazo (Mensaje 452978)
gracias por contestar. Lo probé y sigue dando error.

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


La franja horaria es GMT +2. Ahora son las 07:53:29.

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