Amigos, estoy tniendo problemas para guardar imágenes a la BD desde un record, es el siguiente:
TVMEFotos = record VEHId: Integer; Area: String; Description: String; Extension: String; Indice: Integer; Imagen: TJPEGImage; public constructor Create(const AImage: String); end;
Este es el constructor:
constructor TVMEFotos.Create(const AImage: String); begin //inherited create; Imagen := TJPEGImage.Create; Imagen.LoadFromFile(AImage); end;
Los datos de las imágenes las guardo en una lista TList<TVMEFotos>, así es como intento guardar los datos hacia la BD:
procedure TVME.saveFotos(AId: Integer; ARecList: TList<TVMEFotos>); var Save: TFDQuery; i: Integer; begin Save := TFDQuery.Create(nil); Save.Connection := Datos.dbDatos; Save.SQL.Clear; Save.SQL.Add('INSERT INTO IMAGENES(FROM_ID,PICTURE,AREA,DESCRIPCION,EXTENSION) VALUES(:ID,:PIC,:AREA,:DESC,:EXT)'); try for i := 0 to ARecList.Count -1 do begin Save.ParamByName('ID').AsInteger := AId; Save.ParamByName('PIC').Assign(ARecList.Items[i].Imagen); Save.ParamByName('AREA').AsString := ARecList.Items[i].Area; Save.ParamByName('DESC').AsString := ARecList.Items[i].Description; Save.ParamByName('EXT').AsString := ARecList.Items[i].Extension; try Save.ExecSQL; except on E:Exception do begin Datos.dbDatos.Rollback; MessageDLG(E.Message + ' en SaveFotos()',mtError,[mbOk],0); end; on E:EFDDBEngineException do begin Datos.dbDatos.Rollback; MessageDLG(E.Message + ' en saveFotos()',mtError,[mbOk],0); end else begin Datos.dbDatos.Rollback; raise Exception.Create('Hubo un problema al guardar las imágenes!'); end; end; //Try except end; //for i finally Save.Free; end; end;
Pero al guardar me marca el siguiente error:
---------------------------
Debugger Exception Notification
---------------------------
Project SisAuto.exe raised exception class $C0000005 with message 'access violation at 0x00406d5b: write of address 0x00000008'.
---------------------------
Break Continue Help
---------------------------
Y me marca esta línea en el depurador:
FISTP QWORD PTR [EDX+ECX]
Así que no entiendo pues.