Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jore

Como salvar só o nome da Imagem

Recommended Posts

Vou perguntar mais uma vez, você debugou o seu código? Sabe dizer em que momento está dando o erro dentro do seu código? Pelo que estou supondo vendo o seu código, o seu problema não está no fato de salvar apenas o nome do arquivo na tabela, mas sim na forma como você trata a carga desta imagem no seu dbnavigator1_click... veja bem.... o loadfromfile do componente TImage só funciona quando você informa o caminho correto para a carga da imagem (diretório + nome do arquivo). Se você só salva o nome do arquivo no banco, você tem que em algum lugar do seu código definir o diretório padrão para salvar as imagens e sempre procurar a imagem neste diretório padrão antes de dar o load (preferencialmente incluindo um teste de validação de existência do arquivo no diretório). E eu não vejo isso em nenhum momento no código que postou.

 

Outra coisa: você dá um edit na sua tabela, mas onde está o post para gravar os dados na mesma?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde amigos,

 

Chrnos

 

Respondendo as suas perguntas:

 

Vou perguntar mais uma vez, você debugou o seu código?

Cara eu realmente não sei fazer isto! Na verdade até sei como se faz mais não sei identificar os erros.

 

Sabe dizer em que momento está dando o erro dentro do seu código?

Acontece na hora de salvar a imagem. ou seja: Na hora em que eu clico no botão do DBNavigator Salvar.

 

Pelo que estou supondo vendo o seu código, o seu problema não está no fato de salvar apenas o nome do arquivo na tabela, mas sim na forma como você trata a carga desta imagem no seu dbnavigator1_click... veja bem.... o loadfromfile do componente TImage só funciona quando você informa o caminho correto para a carga da imagem (diretório + nome do arquivo).

Acho que você matou a charada! Realmente eu não indico o caminho onde ele tem que buscar pela imagem que aparece no DBEdit sabe me dizer onde entra o comando?

É assim? Na pasta Teste subpasta Imagens pois deu erro :

 

Unknown picture file extension (.value)

 

Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'Testes\Imagens\'+'DataModule1.IBTab_TesteTE_IMGITENS.value')

 

Se você só salva o nome do arquivo no banco, você tem que em algum lugar do seu código definir o diretório padrão para salvar as imagens e sempre procurar a imagem neste diretório padrão antes de dar o load (preferencialmente incluindo um teste de validação de existência do arquivo no diretório). E eu não vejo isso em nenhum momento no código que postou.

Acho que é o mesmo caso acima não?

 

Outra coisa: você dá um edit na sua tabela, mas onde está o post para gravar os dados na mesma?

Realmente não tem. Onde seria o melhor lugar para eu por ela no final antes do End?

 

 

Muito obrigado pelas dicas e pela ajuda!

 

PS. Só uma dúvida sabe me explicar porque este meu código funciona perfeitamente se eu simplesmente não usar o ExtractFileName?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde amigos,

 

Chrnos

 

Respondendo as suas perguntas:

 

Vou perguntar mais uma vez, você debugou o seu código?

Cara eu realmente não sei fazer isto! Na verdade até sei como se faz mais não sei identificar os erros.

Quanto a sua questão de como debugar o código, dê uma lida neste link: http://www.dicasdelphi.com.br/tag/debugar/

 

Sabe dizer em que momento está dando o erro dentro do seu código?

Acontece na hora de salvar a imagem. ou seja: Na hora em que eu clico no botão do DBNavigator Salvar.

De boa, dizer que é quando clica no botão é o que se espera de um usuário, não de um programador... você tem que identificar exatamente o ponto onde está o problema debugando, o link acima que te passei irá lhe ajudar um pouco nisso rs.

Pelo que estou supondo vendo o seu código, o seu problema não está no fato de salvar apenas o nome do arquivo na tabela, mas sim na forma como você trata a carga desta imagem no seu dbnavigator1_click... veja bem.... o loadfromfile do componente TImage só funciona quando você informa o caminho correto para a carga da imagem (diretório + nome do arquivo).

Acho que você matou a charada! Realmente eu não indico o caminho onde ele tem que buscar pela imagem que aparece no DBEdit sabe me dizer onde entra o comando?

É assim? Na pasta Teste subpasta Imagens pois deu erro :

 

 

 

Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'Testes\Imagens\'+'DataModule1.IBTab_TesteTE_IMGITENS.value')

 

 

Aqui temos um problema de erro de programação... primeiro, porque quando você salva o nome da imagem no banco de dados, só vai ter o nome da imagem, não o caminho... então usar o ExtractFilePath é meio inútil aqui, sem contar que você transformou o ponto onde está pegando o retorno do seu BD em uma string ao por o mesmo entre aspas. Seu código aqui deveria estar sendo algo como:

Image1.Picture.LoadFromFile('c:\Testes\Imagens\'+DataModule1.IBTab_TesteTE_IMGITENS.value)

Lembrando que, se o nome do seu arquivo estiver sendo salvo sem a extensão, o comando acima não irá funcionar porque ainda teria que adicionar a extensão ao final.

Outra coisa: você dá um edit na sua tabela, mas onde está o post para gravar os dados na mesma?

Realmente não tem. Onde seria o melhor lugar para eu por ela no final antes do End?

Ai é questão de como vai estruturar a sua programação... Se você tem um botão em tela para gravar as alterações, o indicado é por nele o tratamento tanto para o inserção quanto para a edição.

Muito obrigado pelas dicas e pela ajuda!

 

PS. Só uma dúvida sabe me explicar porque este meu código funciona perfeitamente se eu simplesmente não usar o ExtractFileName?

O ExtractFileName extrai o nome do arquivo apenas, eliminando o caminho até ele (ou seja, se no dialog está com valor c:\temp\imagem.jpg, o ExtractFileName vai eliminar o c:\temp\ e lhe dar apenas o nome - não lembro agora se trás a extensão junto)... quando você pega direto do dialog, você pega o caminho completo + o nome do arquivo com a extensão... provavelmente é ai que está a diferença.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá novamente Chrnos ,

primeiro quero agradecer por sua ajuda e até pela bronca rs rs

Mas, não sou programador (ainda), estou tentando aprender e para isso estou desenvolvendo alguns projetinhos particulares para tentar aprender. Já havia visto o link que você em indicou e mesmo assim continuo com dúvidas.

Vou continuar tentando e quem sabe daqui a algum tempo eu aprendo né! 8-)

Mais uma vez obrigado!

 

Continuo a minha busca...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.