Comando abre Foto access Violation

Delphi

Automação Comercial

Banco de Dados

05/06/2017

Boa noite Pessoal estou com uma problema em minha form cadastro de Membros, estou usando o seguinte codigo
procedure TFrmCadMembros.Button4Click(Sender: TObject);
begin
 if AbreFoto.Execute then       // abre dialogo para seleção de foto
 begin
    Foto.Picture.LoadFromFile(AbreFoto.FileName);
    DM.TabMembro.Edit;            // ativa modo edição da form
    DM.TabMembroFOTO.value:=AbreFoto.FileName;
    end
    else

    Foto.Picture.LoadFromFile(DM.TabMembroFoto.Value);
end;


procedure TFrmCadMembros.DBNavigator1Click(Sender: TObject;
  Button: TNavigateBtn);
begin
    Foto.Picture.LoadFromFile(DM.TabMembroFoto.Value);   // atualiza foto na navegação
end;

procedure TFrmCadMembros.FormCreate(Sender: TObject);
begin
//Foto.Picture.LoadFromFile(DM.TabMembroFoto.Value);
Foto.Picture.LoadFromFile(DM.TabMembroFoto.Value);
end;


e esta me retornando o seguinte erro :
Project Adonai.exe raised exception class EAccessViolation with message 'Access violation at address at 007511B8 in module Adonai.exe'. Read of address 000001D4'.


Quando eu dou um Break sou levado a esta linha da form
Foto.Picture.LoadFromFile(DM.TabMembroFoto.Value);



que quando eu comento ela o erro desaparece.

Bom pessoal nao preciso nem diser que sou novo em Delphi neh!! Aguardo a ajuda de vc´s.

Quero desde já expressar meu agradecimento a todos que vem contribuindo tanto com suas duvidas quanto com a solução das mesmas, o motivo de tal gratidao é que tenho obtido muitos resultados com base no que venho encontrando no forum.
Abraços !!!!
Janilto Oliveira

Janilto Oliveira

Curtidas 0

Melhor post

Robson Morais

Robson Morais

05/06/2017

verifique o retorno que vc tem nesse codigo
DM.TabMembroFoto.Value

veja se está trazendo o caminho da foto corretamente.
GOSTEI 1

Mais Respostas

Janilto Oliveira

Janilto Oliveira

05/06/2017

Voce esta se referindo ao caminho exato da foto que no caso é o que o componente OpenPictureDialog pega na instrução DM.TabMembroFOTO.value:=AbreFoto.FileName;
que no caso é o caminho : C:\\ProgramData\\Adonai_software\\Fotos\\XXXX.jpg
Eu nao tenho certeza de como verificar esse retorno mas segundo o que estou vendo esta correto sim.
Verifiquei tbm o campo da tabela TabMembro referente a imagem e o nome correto é FOTO mesmo.
Bo nao sei muito bem o que fazer mas este erro nao acontecia antes..

Aguardo noticias!! Obrigado
GOSTEI 0
Robson Morais

Robson Morais

05/06/2017

o que vc pode fazer é jogar no
DM.TabMembroFoto.Value

tenta assim tbem

DM.TabMembroFoto.asString


veja se vai dar o retorno certo e vai debugando....
GOSTEI 0
Gutierry Pereira

Gutierry Pereira

05/06/2017

Bom dia,
Que componente é esse de foto que esta utilizando ?
Possa ser que a proriedade Picture do componente ainda não tenha sido criada.

Para identificar que esta dando o problema coloque um teste antes dessa linha onde o erro ocorre:
   if Assigned(DM) Then 
   begin
      showMessage('DM não esta instanciado');
      // Solução dar um create no DM
      exit;
   end; 

  if Assigned(DM.TabMembroFoto) Then
  begin
    ShowMessage('TabMembroFoto não instanciado');
    // Solução instanciar o TabMembroFoto ou efetuar um open na tabela
    exit;
  end; 

  if Assigned(Foto.Picture) Then
  begin
    ShowMessage('Objeto da propriedade picture não foi instanciado');
    // Solução , verificar como o componente instancia este objeto, em alguns casos isso é feito via bitmap
    exit;
  end; 
  



Qualquer coisa estou a disposição,

Abraços
GOSTEI 1
POSTAR