REVELAR

Fórum Como resolver problema de Gravação de Imagem #329365

14/09/2006

0

Caros colegas

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

Helio Nascimento

Responder

Posts

14/09/2006

Helio Nascimento

Completando o problema explico que em outra aplicaçao com outro Banco de Dados também Firebird esta rotina está funcionando perfeitamente.
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..


Responder

Gostei + 0

15/09/2006

Helio Nascimento

Caros Colegas. Depois fazendo testes isolando parte desta procedure, cheguei a conclusão que o que está provocando este erro é o Comando:
if OpenPictureDialog1.Execute Then


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


Responder

Gostei + 0

18/09/2006

Helio Nascimento

Colegas,
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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar