Tenog un formulario con un TImage en el que puedo seleccionar el fichero de imagen a asignar para luego grabarlo en una tabla Firebird. Supongamos que el TImage está así:

Un vez cargado dicho TImage para grabarlo en la tabal hago esto:
Código:
for (nItem = 0; nItem < this->ComponentCount; nItem ++)
{
Source = this->Components[nItem];
[...]
fPersona->Query->Close();
if (Source->ClassNameIs("TImage"))
{
TImage *Imagen = static_cast<TImage*>(Source);
TMemoryStream *msImagen = new TMemoryStream;
(Imagen->Picture->Bitmap)->SaveToStream(msImagen);
msImagen->Seek(0, soFromBeginning);
if (!lPrueba && msImagen->Size == 0)
continue;
if (msImagen == 0)
fPersona->Query->SQL->Text = "DELETE FROM Instalacion WHERE Etiqueta = :Campo";
else
{
if (lPrueba)
fPersona->Query->SQL->Text = "UPDATE Instalacion SET Imagen = :Imagen WHERE Etiqueta = :Campo";
else
fPersona->Query->SQL->Text = "INSERT INTO Instalacion (Etiqueta, Imagen) VALUES (:Campo, :Imagen)";
fPersona->Query->ParamByName("Imagen")->LoadFromStream(msImagen, ftBlob);
}
fPersona->Query->ParamByName("Campo")->AsString = Source->Name;
}
[...]
try
{
fPersona->Query->ExecSQL();
fPersona->Query->Transaction->Commit();
}
catch(...)
{
Screen->Cursor = crArrow;
fPersona->Query->Transaction->Rollback();
Mensaje(-1, "Se ha producido un error en la actualización de los datos.¦" + ExtractFileName(AnsiString(__FILE__)) + FormatFloat("' - '0", __LINE__), "Volver");
LisSitSelectItem(NULL, NULL, false);
return;
}
}
El problema es que ni me da error ni nada; simplemente, no graba nada.