Try... except não deu certo!!!

Delphi

26/11/2003

Caros colegas

Tentei utilizar pela primeira vez o Try... Except e o erro acontece na linha
do loadfromfile e o processamento não passa para o except...

Tenho uma tabela chamada TblVestido e no campo FotoVestido tenho o
path da foto ex: C:\Vestido\Vestido.jpg

Ao tentar usar...
Try
PctFotoVestido.Picture.loadfromfile(TblVestidoFotoVestido.value)
except
Mensagem tipo ´Foto nao existe no diretorio´

O Delphi para com erro no loadfromfile...

Somente funcionou quando fiz o seguinte...

If fileexists(TblVestidoFotoVestido.value) then
PctFotoVestido.Picture.loadfromfile(TblVestidoFotoVestido.value)
else
....

entao qual é a do Try ???????????????????????
porque ao não achar o arquivo ao inves de dar erro ele não passou a executar o except???
resumindo,,, nao aprendi a usar o recurso do try ...

Alguem me dá um help???????????? :?:
Emerson
Programador Clipper desde 1990
Programador Delphi desde 2003 (SOCORROOOOOOOOOOOOOOOO!!)


Emerson_

Emerson_

Curtidas 0

Respostas

Rafael Heise

Rafael Heise

26/11/2003

Não sei exatamente... mas o try except se usa
try
  { código }
except
  { código quando der erro }
end;

e caso queira a mensagem de erro
try
  { código }
except
  on E: Exception do
  begin
    {código quando der erro.}
    {para acessar a mensagem use E.Message}
  end;
end;


bom.. sempre foi assim.. mas se você quer um conselho, eu digo pra evitar ao máximo usar try except. se você pode fazer um teste antes de dar erro para evitar de dar erro, use, no seu caso, o FileExist(...) ok?
tente evitar ao máximo usar try except, porque isso não é coisa de programador de verdade... se você sabe onde pode dar um erro, e se você pode fazer um teste para ver se o que você quer fazer vai funcionar, faça. Isso deixa o código mais claro e caso exista outros tipos de erros, você saberá mais facilmente. valeu?


GOSTEI 0
Beppe

Beppe

26/11/2003

O Delphi para onde gera a exceção, mesmo num bloco try/except, por causa do suporte a depuração. Tente rodar fora do IDE, então não aparecerá nenuma mesagem ali.

Como o zerneo disse, a exceções e manipuladores servem para casos [b:89dea0909a]excepcionais[/b:89dea0909a]. Embora há casos que haveria razão em usá-lo, para fins de uma aplicação mais robusta. Pense, o arquivo pode existir, mas não contém uma imagem. Então você deve refletir bem na escolha entre testes e exceções, falow.


GOSTEI 0
Leonardo.moulin

Leonardo.moulin

26/11/2003

Bom dia !

Se eu não estiver enganado, o que vc está tentanto fazer, é gravar a imagem inteira no banco de dados e não só o path da imagem !!

Sendo assim caso não ache o arquivo ele apenas retorna file not found
e isso não caracteriza um erro, pois na verdade ele não encontrou mesmo o arquivo, ao menos que a imagem esteja na pasta raiz do executável da aplicação !! Me corrijam se eu tiver errado.

Como vc só deseja armazernar o path da imagem, vc pode fazer o seguinte.

Insira no form um componente OpenDialog.

OpenDialog1.Execute // EXECUTA O OPENDIALOG
if OpenDialog1.FileName <> ´´ then // VERIFICAR SE FOI SELECIONADO ALGUM ARQUIVO, CASO SIM...
showmessage(OpenDialog1.FileName); // MOSTRA NA TELA O PATH DO ARQUIVO SELECIONADO


no exemplo eu mostro na tela o path do arquivo selecionado, mas vc pode modificar de forma que insira em seu banco de dados como uma string qualquer.

REPARE NÃO É NECESSÁRIO UTILIZAR TRY....EXCEPT...


ESPERO TER AJUDADO

Leonardo Moulin


GOSTEI 0
POSTAR