Tradução remover o e Exception

Delphi

06/07/2006

Galera eu pego o erro e traduzo da Base assim:

try
SCREEN.Cursor := crHourGlass;
IBTable1.Delete;
SCREEN.Cursor := crdefault;
except
on E: Exception do begin
                      ShowMessage(´Ocorreu o seguinte erro: ´+#13+e.message);
                     end;
SCREEN.Cursor := crdefault;
end;
end;


só que me retorna sempre a primeira linha assim:
Exception 1
Ocorreu o seguinte erro: tallll


só que não consigo tirar a primeira linha da String e.message
pra ficar só a tradução assim:
Ocorreu o seguinte erro: tallll


Alguém tem alguma coisa pronta ou alguma edéia??

Thanks


Marcos Fernando

Marcos Fernando

Curtidas 0

Respostas

Adriano Santos

Adriano Santos

06/07/2006

Marco, desculpe, mas num entendi.


GOSTEI 0
Marcos Fernando

Marcos Fernando

06/07/2006

Desculpe se não foi claro:

Assim:

o código acima captura o erro gerado pelo FireBird gerado por um exception na base,

ai eu mando dar um showMessage com o erro traduzido, só que não sei porque sempre vem na primeira linha da string do erro (e.message) assim:
Exception 1
Ocorreu o seguinte erro: tallll


só quero saber como posso remover a primeira linha dessa string para que minha mensagem fique assim:
Ocorreu o seguinte erro: tallll


simples,
Thanks


GOSTEI 0
Marco Salles

Marco Salles

06/07/2006

tb não entendi...

voce esta dizendo que o delphi esta [b:52511fcf0f]´embaralhando´ [/b:52511fcf0f]a string

a mensagem deveria ser assim

[b:52511fcf0f]
Ocorreu o seguinte erro: tallll
[/b:52511fcf0f]

e sei lá porque cargas dágua aparece uma String [b:52511fcf0f]Exception 1[/b:52511fcf0f]
em cima da String :arrow: [b:52511fcf0f] Ocorreu o seguinte erro: tallll[/b:52511fcf0f]

Gerando uma memsagem digamos assim [b:52511fcf0f]´embarladada´[/b:52511fcf0f]

[b:52511fcf0f]
Exception 1 Ocorreu o seguinte erro: tallll
[/b:52511fcf0f]

se for isto mesmo que entendi , antes de prosseguir para a solução estou pasmo :cry: :cry: Devo estar entendendo errado :cry: :cry:


GOSTEI 0
Marcos Fernando

Marcos Fernando

06/07/2006

exatamente o delphi me retorna ao erro assim mesmo:
Exception 1 
Ocorreu o seguinte erro: tallll


e se eu conseguir remover a primeira linha fica tudo blz, pois do mesmo modo que aparece na primeira linha Exception 1 aparece Exception 2 ou Exception 33 depende de qual eu usar na base,

Thanks


GOSTEI 0
Marco Salles

Marco Salles

06/07/2006

exatamente o delphi me retorna ao erro assim mesmo: Código: Exception 1 Ocorreu o seguinte erro: tallll


voce ja tentou observar a mensagem de erro que aparece via aplicativo.
via executável...


GOSTEI 0
Adriano Santos

Adriano Santos

06/07/2006

[quote:736fc9a59a=´Marco Salles´]
exatamente o delphi me retorna ao erro assim mesmo: Código: Exception 1 Ocorreu o seguinte erro: tallll


voce ja tentou observar a mensagem de erro que aparece via aplicativo.
via executável...[/quote:736fc9a59a]

Tô pasmo, nunca vi isso.


GOSTEI 0
Marcos Fernando

Marcos Fernando

06/07/2006

Mais é via aplicativo esse erro,

para facilitar o entendimento montei um demo básico,

http://www.brasilsistemas.com.br/brasilsistemas/Error.zip

Thanks


GOSTEI 0
Marco Salles

Marco Salles

06/07/2006

a mensagem de erro que obtive foi normal :?: :?: :?:


GOSTEI 0
Marcos Fernando

Marcos Fernando

06/07/2006

Desculpe na correria eu acabei postando o exemplo errado, mais já mandei o correto...
http://www.brasilsistemas.com.br/brasilsistemas/Error.zip

o erro que retorna é esse:
[img]http://www.brasilsistemas.com.br/brasilsistemas/Error.bmp[/img]

Thanks


GOSTEI 0
Marco Salles

Marco Salles

06/07/2006

Mudei o diretorio do seu banco para o caminho correto em minha máquina
Configurei as propriedades conected do TDIBDataBase e do IbTransaction
para True..[b:1214eee444] Porem quando tento configurar a propriedade Conected do IbTable apresenta a seguinte mensagem de erro Abaixo [/b:1214eee444]: :cry: :cry:

[URL=http://imageshack.us][img:1214eee444]http://img132.imageshack.us/img132/9143/imagemfernando9sp.png[/img:1214eee444][/URL]

Mesmo assim rodei o aplicativo e dá esta mensagem ... Que é a correta
[b:1214eee444]Sem o Exception[/b:1214eee444] na mensagem conforme se pode notar


[URL=http://imageshack.us][img:1214eee444]http://img142.imageshack.us/img142/8650/imagemfernando16px.png[/img:1214eee444][/URL]


GOSTEI 0
Marcos Fernando

Marcos Fernando

06/07/2006

Em minhas máquinas aki consigo abrir normal, eu uso o FB 1.5.3.4870 com IBX 7.08 pode ser isso,

e referente a message:


tá blz, pois o erro acontece quando eu uso o Exception do Banco FireBird

Muito Grato pela força

Thanks


GOSTEI 0
Adriano Santos

Adriano Santos

06/07/2006

[quote:a3ad60bc06=´Marcos Fernando´]Em minhas máquinas aki consigo abrir normal, eu uso o FB 1.5.3.4870 com IBX 7.08 pode ser isso,

e referente a message:


tá blz, pois o erro acontece quando eu uso o Exception do Banco FireBird

Muito Grato pela força

Thanks[/quote:a3ad60bc06]

Hummm, eu até pensei que vc tava usando os exceptions do banco, mas sabe qdo num cai a ficha? Ontem dei uma olhada rápida no seu sistema, porém não olhei o banco.

Pow, então que chato hein? Terá que dar um nome mais ´amigável´ para cada Exception.


GOSTEI 0
Marcos Fernando

Marcos Fernando

06/07/2006

Hummm, eu até pensei que vc tava usando os exceptions do banco,


Mais eu uso, olha no trigger da tabela banco, tenta excluir pelo IBexpert ele vai traduzir blz a message gerado por um exception, já pelo demo que montei ele me retorna sempre ao número do exception antes da message como a imagem:

Terá que dar um nome mais ´amigável´ para cada Exception.


essa não entendi? pois onde influencia o nome? e também o nome é ´amigável´ ou não???

Thanks


GOSTEI 0
Adriano Santos

Adriano Santos

06/07/2006

Qdo vc cria um exception no banco num dá pra vc dar um nome pra ele, tipo como fazemos com o domains?


GOSTEI 0
Marcos Fernando

Marcos Fernando

06/07/2006

Positivo eu dei um nome:

Create EXCEPTION [b]DELETE_PARCELAS [/b]´´


Thanks


GOSTEI 0
Marco Salles

Marco Salles

06/07/2006

Positivo eu dei um nome: Código: Create EXCEPTION [b:6e7b9a103f]DELETE_PARCELAS [/b:6e7b9a103f]´´


então , ´acho eu´ que ao inves de voce usar o

except
on E: Exception do begin que é o erro mais geral voce deve usar este tipo de erro

except
on E:DELETE_PARCELAS  do begin



GOSTEI 0
Adriano Santos

Adriano Santos

06/07/2006

[quote:a11a96ee79=´Marco Salles´]
Positivo eu dei um nome: Código: Create EXCEPTION DELETE_PARCELAS´´


então , ´acho eu´ que ao inves de voce usar o

except
on E: Exception do begin que é o erro mais geral voce deve usar este tipo de erro

except
on E:DELETE_PARCELAS  do begin
[/quote:a11a96ee79]

Bom, agora deixa eu viajar. Se você deu o nome de [b:a11a96ee79]DELETE_PARCELAS[/b:a11a96ee79], teoricamente sua mensagem de excetion aparecerá mais ou menos assim:

[quote:a11a96ee79=´Mensagem de erro´]
    DELETE_PARCELAS
    Ocorreu um erro ao executar a ação.
  

[/quote:a11a96ee79]

Ainda não fica ´amigável´ como eu mesmo disse acima. Certo?
Agora, qdo vc define um exception, vc tb define qual a mensagem não define? Pq ai a mensagem tem que ser bem explicativa.


GOSTEI 0
Marcos Fernando

Marcos Fernando

06/07/2006

except on E:DELETE_PARCELAS do begin


isso no Delphi claro? mais se eu colocar [b:071fcb97bf]E:DELETE_PARC[/b:071fcb97bf]ELAS no lugar do [b:071fcb97bf]E: Exception [/b:071fcb97bf]isso não me parece ter lógico pois [b:071fcb97bf]E: Exception[/b:071fcb97bf] é a messagem do erro que o delphi pega certo?
já o [b:071fcb97bf]E:DELETE_PARCELAS [/b:071fcb97bf] seria o nome da exception dentro do FireBird? mais ai não entendi...

Thanks


GOSTEI 0
Marcos Fernando

Marcos Fernando

06/07/2006

Bom, agora deixa eu viajar. Se você deu o nome de DELETE_PARCELAS, teoricamente sua mensagem de excetion aparecerá mais ou menos assim:


DELETE_PARCELAS Ocorreu um erro ao executar a ação.


fica assim:
Ocorreu um erro ao executar a ação.



GOSTEI 0
Adriano Santos

Adriano Santos

06/07/2006

[quote:a02b969f1c=´Marcos Fernando´]

fica assim:
Ocorreu um erro ao executar a ação.
[/quote:a02b969f1c]

Ahhhhh, então agora tá mais fácil. Vc usando o E:DELETE_PARCELAS o Delphi vai exibir a mensagem adivinda do banco de dados e não aparece o nome da excpetion, ai sim...fica bem legal.


GOSTEI 0
Marco Salles

Marco Salles

06/07/2006

desculpa ter te confundido.. mas como eu disse antes : ´Eu acho que´

eu pensei que a definição de uma exceção no banco pudesse gerar um tipo de erro personalizado.. com nome proprio. Mas parece que este não é o caso...


GOSTEI 0
Marcos Fernando

Marcos Fernando

06/07/2006

eu pensei que a definição de uma exceção no banco pudesse gerar um tipo de erro personalizado.. com nome proprio. Mas parece que este não é o caso...

exatamente um messagem personalizada que estou fazendo:
assim:
[list:3e0d326441] exception delete_parcelas(´Aqui o erro personalizado´);[/list:u:3e0d326441]
que eu faço dentro de uma SP, ou trigger

ai para cada caso eu mando gerar uma memssagem só q não consigo fazer q o delphi não me retorne ao ID do Execption conforme a imagem:


Thanks


GOSTEI 0
Marco Salles

Marco Salles

06/07/2006

t atudo muito confuso...

mas acho que esta mensagem que voce esta obtendo não é do delhpi

coloque um BreakPoint e execute o rode usando o F9 e veja se o deplhi passa pela linha

on E: Exception do begin
                     msg := pchar(´Ocorreu o segunte erro: ´+#13+E.Message);
                     SCREEN.Cursor := crdefault;
                     Application.MessageBox(msg,PChar(application.title),
                     mb_DefButton2+mb_IconError+mb_TaskModal);
                     end;


Usei DbExpress para acessar sua base de dados e o delphi não executa
esta instrução.. Pelo menos para mim :cry: :cry: :cry:


GOSTEI 0
Marcos Fernando

Marcos Fernando

06/07/2006

Grato pela força...

Por o Delphi receber na primeira linha o ID do Exception do FB que preciso saber como posso tirar a primeira linha da e.message que foi a pergunta base,

se vc abrir a base pelo ibExpert e deletar um registro do banco vai ver que o Ibexpert vai formatar a mensagem do jeito que preciso,
só pra entender da string recebida no erro:


Exception 1
Erro tal


preciso retirar essa linha 1 para que fique assim:
Erro tal


que ai eu formato e passo ao usuário assim:

Ocorreo o seguinte erro:
Erro tal


thanks


GOSTEI 0
Adriano Santos

Adriano Santos

06/07/2006

[quote:0cefe550d3=´Marco Salles´]

on E: Exception do begin
                     msg := pchar(´Ocorreu o segunte erro: ´+#13+E.Message);
                     SCREEN.Cursor := crdefault;
                     Application.MessageBox(msg,PChar(application.title),
                     mb_DefButton2+mb_IconError+mb_TaskModal);
                     end;


Usei DbExpress para acessar sua base de dados e o delphi não executa
esta instrução.. Pelo menos para mim :cry: :cry: :cry:[/quote:0cefe550d3]

Onde vc jogou isso? Pq precisa ser no evento OnReconcileError do TClientDataSet, pois o DBExpress não propaga os exceções.


GOSTEI 0
Marcos Fernando

Marcos Fernando

06/07/2006

Eu coloquei em um botão de exclusão,

var msg : pansichar;
begin
try
SCREEN.Cursor := crHourGlass;
IBTable1.Delete;
SCREEN.Cursor := crdefault;
except
on E: Exception do begin
                     msg := pchar(´Ocorreu o segunte erro: ´+#13+E.Message);
                     SCREEN.Cursor := crdefault;
                     Application.MessageBox(msg,PChar(application.title),
                     mb_DefButton2+mb_IconError+mb_TaskModal);
                     end;
end;

Normal sempre uso assim pra capturar os erros,

[b:b405a85516]eh oque falta pro Delphi executar essa instrução que te mando???[/b:b405a85516]


thanks


GOSTEI 0
Imoreira

Imoreira

06/07/2006

Veja esse tópico

http://forum.clubedelphi.net/viewtopic.php?t=57672&highlight=


GOSTEI 0
POSTAR