Campo Blob no MySQL - Gravar Imagens

MySQL

26/05/2004

Alô a Todos....

Alguém poderia me dar uma dica de como gravar imagens JPG num campo BLOB
em MYSQL, tenho um programa que necessita fazer isso, mas recebo um erro de
TYPECAST DE CLASSE INVÁLIDO, ao qual não sei o que significa.

Alguém poderia me dar uma luz?

Obrigado
Rafael


Microbios

Microbios

Curtidas 0

Respostas

Bolasete

Bolasete

26/05/2004

Olá amigo,,, aqui vai um código do meu aplicativo.
Crie os componentes necessários e faça o teste
Té+ Bolasete

procedure TF_Par1.BitBtn7Click(Sender: TObject);
var Bmp: TBitMap; Jpg: TJPEGImage; Stm: TStream;
begin
OpenFoto.InitialDir:=´Diretório das fotos´;
if OpenFoto.Execute then
begin
Bmp:=TBitMap.Create;
Jpg:=TJPEGImage.Create;
try
//[ ] Captura o arquivo Jpg
Jpg.LoadFromFile(OpenFoto.FileName);
//[ ] Abre a tabela
if not (Dy1Par.DataSet.State in [dsEdit, dsInsert]) then Dy1Par.DataSet.Edit;
//[ ] Grava o diretório e o arquivo
Dy1Par.DataSet.FieldByName(´Par_DirSplash´).AsString:=OpenFoto.FileName;
//[ ] Transfere JPG para BMP
Bmp.Assign(jpg);
//[ ] Manda para o visualizador
ZDbImage1.Picture.Assign(bmp);
//[ ] Grava o que está no visualisador
Dy1Par.DataSet.Post;
//[ ] se não for JPG...
except on EInvalidGraphic do
begin
if not (Dy1Par.DataSet.State in [dsEdit, dsInsert]) then Dy1Par.DataSet.Edit;
Dy1Par.DataSet.FieldByName(´Par_DirSplash´).AsString:=OpenFoto.FileName;
//[ ] Captura o arquivo do diretório gravado na tabela
Bmp.LoadFromFile(OpenFoto.FileName);
//[ ] Manda a imagem BMP para o componente
ZDbImage1.Picture.Assign(Bmp);
//[ ] Grava a imagem do visualizador
Dy1Par.DataSet.Post;
end;
end;
//[ ] Libera os componentes criados
Bmp.Free;
Jpg.Free;
end
else
begin
if TBlobField(Dy1Par.DataSet.FieldByName(´Par_Splash´)).BlobSize > 0 then
if Confirma(´Limpar a cache ?´,´Figura´)=IdYes then
begin
if not (Dy1Par.DataSet.State in [dsEdit,dsInsert]) then Dy1Par.DataSet.Edit;
Dy1Par.DataSet.FieldByName(´Par_DirSplash´).AsString:=´´;
Qy1ParPar_Splash.AsVariant:=´´;
Dy1Par.DataSet.Post;
end;
end;
//[ ] LogoSplash é campo Blob para tela do Menú
//[ ] Checa se há imagem gravada
if TBlobField(Dy1Par.DataSet.FieldByName(´Par_Splash´)).BlobSize > 0 then
begin
try
//[ ] Cria os componentes
Bmp:=TBitMap.Create;
Stm:=TMemoryStream.Create;
//[ ] carrega a imagem na memória
TBlobField(Dy1Par.DataSet.FieldByName(´Par_Splash´)).SaveToStream(Stm);
//[ ] Transfere a imagem para o componente criado
Stm.Position:=0;
Bmp.LoadFromStream(Stm);
//[ ] Manda a foto para F_Menu
F_Menu.Image1.Picture.Graphic:=Bmp;
F_Menu.Image1.Update;
//[ ] Libera os componentes
FreeAndNil(Stm);
FreeAndNil(Bmp);
except on EInvalidGraphic do MessageDlg(´Algo deu errado !´, mtWarning, [mbOK], 1);
end;
end else
begin
F_Menu.Image1.Picture.Graphic:=F_Par1.Image1.Picture.Graphic;
F_Menu.Image1.Update;
end;
end;


GOSTEI 0
POSTAR