[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 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
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
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
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
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