Fórum Como resolver problema de Gravação de Imagem #329365
14/09/2006
0
Uso D7 -Firebird 1.5 e DbExpress
Tenho uma tabela que faz o cadastro de associados e há um campo tipo BLOB chamado de FOTO. Há tempos com a mesma rotina de inserção que abaixo passo a vcs. inseria a foto no banco sem problemas, Agora, sem mais e nem menos não aceita inseir com a mensagem que passo abaixo:
´ Project SISEP.EXE raised exception class EAccessViolation with message´Acess violation at address 00000000. Read of address 00000000´. Process stopped. Use Step or Run to continue´.
A rotina abaixo utilizada.
procedure TFrmServidor.IncluirFoto1Click(Sender: TObject); Var FileStream : TFileStream; BlobStream : TStream; begin inherited; if DtSrc.State=dsinactive then begin MessageDlg(´Abra um registro antes de alterar os dados!´,mtinformation,[mbok],0); exit; end; if not (DtSrc.State in ([dsEdit,dsInsert])) then DtSrc.DataSet.Edit; if OpenPictureDialog1.Execute Then begin try FileStream:=TFileStream.Create(OpenPictureDialog1.FileName, fmOpenRead or fmShareDenyWrite); BlobStream:= DtSrc.DataSet.CreateBlobStream(DtSrc.DataSet.FieldByName(´FOTO2´), bmWrite); try BlobStream.CopyFrom(FileStream,FileStream.Size); finally FileStream.Free; BlobStream.Free; end; except ShowMessage(´Problemas com memória.´); end; end; end;
Helio Nascimento
Curtir tópico
+ 0Posts
14/09/2006
Helio Nascimento
Agora me veio à mente que este Banco de Dados outrora sofreu um pane e o GFIX e Cia não deu jeito de consertá-lo. Para solucionar eu tive que apagar todos os registros de todas as tabelas e com o uma rotina passei a regravar os dados.Após isto o Banco passou a fazer o Backup normalmente através do IBExpert. Porém hoje fui fazer uns testes para inserir as figuras e está dando o problema acima. A pergunta é : O que relato acima tem algo a ver com o problema da mensagem ? Outra coisa é que rodando a aplicação fora do delphi ela da a caixa de mensagem por diversas vezes para parar eu tenho que dar ALT+CTRL + DEL e no gerenciador estrangular a aplicação.
Fico no aguardo... até breve..
Gostei + 0
15/09/2006
Helio Nascimento
Deletei este OpenPictureDialog1 e coloquei outro no seu lugar ,mas o problema continua o método ´.Execute´ é que está dando o erro. Aí resolvi colocar um OpenDialog1 para testar, também ele dá problemas. O que será que eu devo fazer para pegar a imagem? Há um outra forma de eu selecionar uma imagem sem usar este objeto ´OpenPictureDialog1?
Obrigado a todos que me responderem.
Hélio Nascimento
Gostei + 0
18/09/2006
Helio Nascimento
Consegui resolver o problema. Esta na VCLSKIN , coloquei - ACTIVE=False e ai consegui gravar as imagens. Se usar a VCLSKIN não funciona. Agora tenho que descobrir qual outra VCLSKIN posso usar. Se alguem souber de outros Skins por favor me informe.
Obrigado/Hélio
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)