[delphi-br] Re: try...except

2005-10-07 Por tôpico luisalbertolopes
Paulo,

Essa função tá declarada no início do código com outro nome... vc tem 
que renomeá-la...

Tem também que criar uma varíavel na função que pega o nome da unit...

Funciona blzinha!

[]´s

Luis Alberto.

--- Em delphi-br@yahoogrupos.com.br, plucaslazaro 
[EMAIL PROTECTED] escreveu
 Luis, tbem estou com este código mas nao consegui fazer o programa 
de testes 
 funcionar, ou melhor nao sai da compilacao dá erro justamente no 
 CreateDataException(Screen.ActiveForm.Name,
 
 Paulo
 
 - Original Message - 
 From: Luis Lopes [EMAIL PROTECTED]
 To: delphi-br@yahoogrupos.com.br
 Sent: Thursday, October 06, 2005 6:46 PM
 Subject: [delphi-br] try...except
 
 
  Pessoal,
 
  Estou fazendo um teste de tratamento de excessão,
  utilizando uma forma e uma sugestão do nosso colega
  Walter.
  O problema é que a excessão é gerada, mas não passa no
  bloco except. Alguém já viu isso acontecer?
 
  Ae está a unit do teste. Está preparada para gerar uma
  excessão e a excessão está sendo gerada.
 
  procedure TdmPrincipal.TesteTratamentoErro(Sender:
  TObject);
  begin
   try
 with dmParametro.ClientDataSetParametro do
 begin
   Edit;
   FieldByName('versao_sistema').AsString :=
  '455444';
   ApplyUpdates(-1);
 end;
   except
  on E: Exception do
CreateDataException(Screen.ActiveForm.Name,
Screen.ActiveControl.Name,
'84', GetUnitName(Self),
'procedure
  TfDlgRelatorioInspecoes.BitBtn2Click(Sender:
  TObject);',
E.Message,
E.ClassName,
 
  'DMFrot.dsListaInspecoesPendentes.Dataset.Open;',
'SErrorTableOpen');
   end;
  end;
 
 
 
  Agradeço a ajuda...
 
  []´s
 
  Luis Alberto
 
 
 
 
 
 
 
 
 
  ___
  Novo Yahoo! Messenger com voz: ligações, Yahoo! Avatars, novos 
emoticons e 
  muito mais. Instale agora!
  www.yahoo.com.br/messenger/
 
 
  -- 
   FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 
 
  Para ver as mensagens antigas, acesse:
  http://br.groups.yahoo.com/group/delphi-br/messages
 
  Para falar com o moderador, envie um e-mail para:
  [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
  Links do Yahoo! Grupos
 
 
 
 
 
 
 
 
  
 
 
 
   
 
   
   
 ___ 
 Novo Yahoo! Messenger com voz: ligações, Yahoo! Avatars, novos 
emoticons e muito mais. Instale agora! 
 www.yahoo.com.br/messenger/




-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

 






Re: [delphi-br] Re: try...except

2005-10-07 Por tôpico plucaslazaro
Luis, agora funcionou certinho é que sou meio cabação ainda, faz pouco tempo
que estou utilizando Delphi, nunca tinha sonhado em declarar a unit TypInfo
e alterar a funcao GetUnitName como vc fez.

Mas valeu, aprendi mais uma.

Esta solução do Walter foi muito legal, o cara sabe muito heim, e pelo jeito
vc tambem, mas ainda chego lá, eu vim do cobol, clipper e agora vou
apanhando do D7, mas um dia eu bato nele.  hehehe.

obrigado

Paulo
- Original Message - 
From: Luis Lopes [EMAIL PROTECTED]
To: plucaslazaro [EMAIL PROTECTED]
Sent: Friday, October 07, 2005 4:42 PM
Subject: Re: [delphi-br] Re: try...except


 Paulo,

 O código completo eh aquele mesmo que o colega Wagner
 postou... só tem que renomear a função e criar 1 ou 2
 variáveis... eu uso no Delhpi 2K5 Win32. Tenho quase
 certeza que funcionará corretamente no Delphi 7,
 porque os comandos e funções utilizados são bem
 básicos.

 de qq forma, ae está.


 function GetUnitName(argObject: TObject): string;
 var
  ptrTypeData: PTypeData;
 begin
  if (argObject.ClassInfo  nil) then
  begin
ptrTypeData := GetTypeData(argObject.ClassInfo);
Result := ptrTypeData.UnitName;
  end;
 end;

 {
 Parametros:

 AFormError- Nome do form que tava ativo quando
 ocorreu o erro
 AControlError - Nome do controle (Button, form,
 Checkbox, etc) que foi clicado
 quando ocorreu o erro
 ALineError- Nº da linha com o erro (voce deve
 coloca-la na mão mesmo na
 implementação)
 AUnitError- Nome da Unit com o erro (voce deve
 coloca-la na mão mesmo na
 implementação)
 ASimbolError  - Nome da rotina com o erro (voce deve
 coloca-la na mão mesmo
 na implementação)
 ADescription  - Descrição do erro (Use E.Message)
 ATypeError- Tipo do erro (Use E.Class)
 AInsError - Instrução (código) com erro
 (Descreva-o manualmente;
 ATableError   - Tabela em uso quando ocorreu o erro.
 }
 function CreateDataException(Const AFormError,
 AControlError, ALineError, AUnitError,
 ASimbolError, ADescription, ATypeError,
 AInsError, ATableError: string): Longint;
 var
  VMemory: TMemoryStatus;
  VLogFile: TextFile;
  VLogFileName: string;
 begin
  VMemory.dwLength := SizeOf(TMemoryStatus);
  GlobalMemoryStatus(VMemory);
  VLogFileName := ExtractFilePath(paramstr(0)) +
 '\errorsys.log';
  try
AssignFile(VLogFile,VLogFileName);
if FileExists(VLogFileName) then
begin
  Append(VLogFile);
 //  Writeln(VLogFile,'');
  Writeln(VLogFile,StringOfChar('-', 62));

 //  Writeln(VLogFile,'');
end else
begin
  Rewrite(VLogFile);
  Writeln(VLogFile,'TELEMONT - Engenharia de
 Telecomunicações S/A');
  Writeln(VLogFile,'DGE - Diretoria de Gestão
 Empresarial/Matriz');
  Writeln(VLogFile,StringOfChar('-', 62));
  Writeln(VLogFile,'');
end;

Writeln(VLogFile,format('DATE/TIME:
 %s',[DateTimeToStr(Now)]));
Writeln(VLogFile,format('Version Number...:
 %s',['sVersion']));
Writeln(VLogFile,format('Active Form..:
 %s',[AFormError]));
Writeln(VLogFile,format('Active Control...:
 %s',[AControlError]));
Writeln(VLogFile,format('Unit Error...:
 %s',[AUnitError]));
Writeln(VLogFile,format('Call Symbol..:
 %s',[ASimbolError]));
Writeln(VLogFile,format('Exception type...:
 %s',[ATypeError]));
Writeln(VLogFile,format('Exception Message:
 %s',[ADescription]));
Writeln(VLogFile,format('Instruction error:
 %s',[AInsError]));
Writeln(VLogFile,format('Line error...:
 %s',[ALineError]));
Writeln(VLogFile,format('Table Error..:
 %s',[ATableError]));

CloseFile(VLogFile);
result := IOResult;
  except
result := -1;
  end;
 end;

 // Use-a assim:
  try
  except
 on E: Exception do
   CreateDataException(Screen.ActiveForm.Name,
   Screen.ActiveControl.Name,
   '84', GetUnitName(Self),
   'procedure
 TfDlgRelatorioInspecoes.BitBtn2Click(Sender:
 TObject);',
   E.Message,
   E.ClassName,

 'DMFrot.dsListaInspecoesPendentes.Dataset.Open;',
   'SErrorTableOpen');
  end;


 []´s

 Luis Alberto.


 --- plucaslazaro [EMAIL PROTECTED] escreveu:

 Boa Tarde Luis

 Eu não tenho o codigo completo, por isso nao consigo
 executar o programa, dá
 erro, na compilação, falta variáveis que eu declarei
 mas mesmo assim não
 vai.

 Se não for te pedir demais, vc poderia me enviar o
 codigo completo?  Eu uso
 Delphi7, será que não foi feito pra Delphi 2005 ?

 Obrigado

 Paulo
 - Original Message - 
 From: luisalbertolopes
 [EMAIL PROTECTED]
 To: delphi-br@yahoogrupos.com.br
 Sent: Friday, October 07, 2005 9:51 AM
 Subject: [delphi-br] Re: try...except


 Paulo,

 Essa função tá declarada no início do código com
 outro nome... vc tem
 que renomeá-la...

 Tem também que criar uma varíavel na função que pega
 o nome

[delphi-br] Re: try except

2005-09-09 Por tôpico Osmar de Souza Júnior

Acho que para esse caso seria interessante fazer um select antes, para
ver se o código já existe. Mas, um exemplo de tratamento seria esse:

try
  Query1.Post;
except
  on E: Exception do
MessageDlg('Ocorreu o seguinte erro!'#13#10 + E.message,
mtWarning, [mbOK], 0);
end;

--- Em delphi-br@yahoogrupos.com.br, paulo vitor [EMAIL PROTECTED] escreveu
 alguem poderia me dar uma dica de como usar o try except! tenho uma
aplicacao na qual qdo inserido umprodutocom mesmo codigo da um pla
deviolaçao dechave primaria, o pal da o evento updateerror alguemsabe
como posso tratar isso para q o aplicativo naom se feche e o usuario
saiba o q fez de errado!
 
   
 -
  Yahoo! Messenger com voz: PROMOÇÃO VOCÊ PODE LEVAR UMA VIAGEM NA
CONVERSA. Participe!
 
 [As partes desta mensagem que não continham texto foram removidas]




-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

 




Re: [delphi-br] Re: try except

2005-09-09 Por tôpico Maurício Chiarato Vaglieri
Talvez a utilização do evento OnPostError fosse mais simples não?
  - Original Message - 
  From: Osmar de Souza Júnior 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Friday, September 09, 2005 8:19 AM
  Subject: [delphi-br] Re: try except



  Acho que para esse caso seria interessante fazer um select antes, para
  ver se o código já existe. Mas, um exemplo de tratamento seria esse:

  try
Query1.Post;
  except
on E: Exception do
  MessageDlg('Ocorreu o seguinte erro!'#13#10 + E.message,
  mtWarning, [mbOK], 0);
  end;

  --- Em delphi-br@yahoogrupos.com.br, paulo vitor [EMAIL PROTECTED] escreveu
   alguem poderia me dar uma dica de como usar o try except! tenho uma
  aplicacao na qual qdo inserido umprodutocom mesmo codigo da um pla
  deviolaçao dechave primaria, o pal da o evento updateerror alguemsabe
  como posso tratar isso para q o aplicativo naom se feche e o usuario
  saiba o q fez de errado!
   
   
   -
Yahoo! Messenger com voz: PROMOÇÃO VOCÊ PODE LEVAR UMA VIAGEM NA
  CONVERSA. Participe!
   
   [As partes desta mensagem que não continham texto foram removidas]




  -- 
   FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

  Para ver as mensagens antigas, acesse:
  http://br.groups.yahoo.com/group/delphi-br/messages

  Para falar com o moderador, envie um e-mail para:
  [EMAIL PROTECTED] ou [EMAIL PROTECTED]



Yahoo! Grupos, um serviço oferecido por: 
  PUBLICIDADE

   


--
  Links do Yahoo! Grupos

a.. Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/
  
b.. Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
  
c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço 
do Yahoo!. 



[As partes desta mensagem que não continham texto foram removidas]



-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html

 





Re: [delphi-br] Re: try except

2005-09-09 Por tôpico Maurício Chiarato Vaglieri
Osmar, Bom Dia!

No evento OnPostError, temos o seguinte cabeçalho: procedure 
TFormXXX.QueryTBXXXPostError(DataSet: TDataSet; E: EDatabaseError; var 
Action: TDataAction);

Onde: DataSet: refere-se a Query/Table que chamou o evento.
  E: refere-se ao erro que ocorreu.
  Action: refere-se a ação que deve ser tomada.

O que eu sugiro é que você procure no Help do Delphi o tópico sobre o 
PostError e monte uma função genérica para tratar dos principais erros que 
podem ocorrer, como Violação de Chave Primária, A falta de um campo NOT NULL, a 
violação de uma chave estrangeira, etc.

Se você não encontrar nada no Help dá um grito aí que a gente vê o que 
faz.

Abraços,

Mauricio Chiarato Vaglieri
  - Original Message - 
  From: Osmar de Souza Júnior 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Friday, September 09, 2005 9:18 AM
  Subject: [delphi-br] Re: try except



  E como faria isso no evento OnPostError ??
  Porque é importante informar o usuário que ocorreu um erro, informá-lo
  com alguma mensagem. Se tiver um exemplo, agradeço.

  []s.

  --- Em delphi-br@yahoogrupos.com.br, Maurício Chiarato Vaglieri
  [EMAIL PROTECTED] escreveu
   Talvez a utilização do evento OnPostError fosse mais simples não?
 - Original Message - 
 From: Osmar de Souza Júnior 
 To: delphi-br@yahoogrupos.com.br 
 Sent: Friday, September 09, 2005 8:19 AM
 Subject: [delphi-br] Re: try except
   
   
   
 Acho que para esse caso seria interessante fazer um select antes, para
 ver se o código já existe. Mas, um exemplo de tratamento seria esse:
   
 try
   Query1.Post;
 except
   on E: Exception do
 MessageDlg('Ocorreu o seguinte erro!'#13#10 + E.message,
 mtWarning, [mbOK], 0);
 end;
   
 --- Em delphi-br@yahoogrupos.com.br, paulo vitor [EMAIL PROTECTED]
  escreveu
  alguem poderia me dar uma dica de como usar o try except! tenho uma
 aplicacao na qual qdo inserido umprodutocom mesmo codigo da um pla
 deviolaçao dechave primaria, o pal da o evento updateerror alguemsabe
 como posso tratar isso para q o aplicativo naom se feche e o usuario
 saiba o q fez de errado!
  
  
  -
   Yahoo! Messenger com voz: PROMOÇÃO VOCÊ PODE LEVAR UMA VIAGEM NA
 CONVERSA. Participe!
  
  [As partes desta mensagem que não continham texto foram removidas]
   
   
   
   
 -- 
  FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 
   
 Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages
   
 Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
   
   
   
   Yahoo! Grupos, um serviço oferecido por: 
 PUBLICIDADE
   
  
   
   
  
  --
 Links do Yahoo! Grupos
   
   a.. Para visitar o site do seu grupo na web, acesse:
   http://br.groups.yahoo.com/group/delphi-br/
 
   b.. Para sair deste grupo, envie um e-mail para:
   [EMAIL PROTECTED]
 
   c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos
  do Serviço do Yahoo!. 
   
   
   
   [As partes desta mensagem que não continham texto foram removidas]




  -- 
   FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

  Para ver as mensagens antigas, acesse:
  http://br.groups.yahoo.com/group/delphi-br/messages

  Para falar com o moderador, envie um e-mail para:
  [EMAIL PROTECTED] ou [EMAIL PROTECTED]



Yahoo! Grupos, um serviço oferecido por: 
  PUBLICIDADE

   


--
  Links do Yahoo! Grupos

a.. Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/
  
b.. Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
  
c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço 
do Yahoo!. 



[As partes desta mensagem que não continham texto foram removidas]



-- 
 FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM 

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

* Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/

* Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

* O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html