Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) AppEvents e erro Delphi


Samuel Sewaybricker

Pergunta

15 respostass a esta questão

Posts Recomendados

  • 0

<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>

Dê um exemplo do erro e da mensagem de erro

Por exemplo, no validate de um campo eu verifico se já existe o código que estou tentando inserir, caso viole esta regra eu dou um raise Exception.Create('Mensagem');

Este raise vai para AppEvents onde é tratado e exibido em um modal, até ai tudo certo, o problema é que após o OK da mensagem a mesma é exibida novamente porém com o formato do raise.

Segue imagens:

Imagem do AppEvents

https://uploaddeimagens.com.br/imagens/erro1-png--22

Imagem do erro repitido

https://uploaddeimagens.com.br/imagens/erro2-png--33

Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

  • 0

<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>

faça um teste

tire o raise Exception.Create('Mensagem');

e veja o que ocorre

obs: siga a execução do código com o break point ( debugger )

Mas como vou forçar o erro sem o raise? O AppEvents é acionado no onException, não sei se ajuda, mas estou convertendo o sistema de delphi4 para delphi7, no 4 não tenho esse problema.

Link para o comentário
Compartilhar em outros sites

  • 0

procedure TMainForm.AppEvents1Exception(Sender: TObject; E: Exception);
var
Msg: TMensagemErroForm;
begin
try
Msg := TMensagemErroForm.Create(Application);

ERROFECH := False;
{if E is EODBC then
begin
if (EODBC(E).Native = 0) and (EODBC(E).State = 'HY106')
and (EODBC(E).RetCode=-1) then
BEGIN
ERROFECH := True;
exit;
END;
end;}


if E.ClassNameIs('Exception') then
begin
Msg.Mensagem0.Caption := E.Message;
Msg.Mensagem1.Caption := '';
Msg.Original.Lines.Clear;
if(TABELATUR <> '') THEN
Log_Sistema(MainForm.EmpresaFilial, TABELATUR, operacaotur, PEDTURNUM, MENSAGEMERRO, E.Message );
Msg.ShowModal;
end;
finally
Msg.Free;
end;
end;

Editado por Samuel Sewaybricker
Link para o comentário
Compartilhar em outros sites

  • 0

faça um teste com esse código .... o erro gerado vai para um arquivo de log

faça algumas alterações para o seu uso

procedure TApres.ApplicationEvents1Exception(Sender: TObject;
  E: Exception);
  var
    NomeDoLog: string;
    Arquivo: TextFile;
  begin
    NomeDoLog := ChangeFileExt(Application.Exename, '.log');
    AssignFile(Arquivo, NomeDoLog);

    if FileExists(NomeDoLog) then
    Append(arquivo) { se existir, apenas adiciona linhas }
    else
      ReWrite(arquivo); { cria um novo se não existir }
    try
      WriteLn(arquivo, DateTimeToStr(Now) + ':' + E.Message);
      WriteLn(arquivo,'----------------------------------------------------------------------');
      Application.ShowException(E);
    finally
      CloseFile(arquivo)
    end;

end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>

faça um teste com esse código .... o erro gerado vai para um arquivo de log

faça algumas alterações para o seu uso

procedure TApres.ApplicationEvents1Exception(Sender: TObject;
  E: Exception);
  var
    NomeDoLog: string;
    Arquivo: TextFile;
  begin
    NomeDoLog := ChangeFileExt(Application.Exename, '.log');
    AssignFile(Arquivo, NomeDoLog);

    if FileExists(NomeDoLog) then
    Append(arquivo) { se existir, apenas adiciona linhas }
    else
      ReWrite(arquivo); { cria um novo se não existir }
    try
      WriteLn(arquivo, DateTimeToStr(Now) + ':' + E.Message);
      WriteLn(arquivo,'----------------------------------------------------------------------');
      Application.ShowException(E);
    finally
      CloseFile(arquivo)
    end;

end;

abraço

Obrigado pela ajuda mas não é essa solução que preciso..

Link para o comentário
Compartilhar em outros sites

  • 0

<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>

tire esse comando

Msg.ShowModal;

faça o teste e retorne o resultado

Se eu retirar este comando a mensagem tratada não irá aparecer, somente o raise.

O que estou tentando fazer é a situação contrária, não aparecer a mensagem do raise e sim a do AppEvent.

Link para o comentário
Compartilhar em outros sites

  • 0

<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>

tente isso:

va no Menu do delphi > Tools > Debugger Options...

desmarque Integrated debugging

compile e rode o programa

com isso somente as mensagens do AppEvent é que serão mostradas

abraço

Obrigado pela resposta, mas não funcionou.

Link para o comentário
Compartilhar em outros sites

  • 0

<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>

<script type='text/javascript'>window.mod_pagespeed_start = Number(new Date());</script>

tente isso:

va no Menu do delphi > Tools > Debugger Options...

desmarque Integrated debugging

compile e rode o programa

com isso somente as mensagens do AppEvent é que serão mostradas

abraço

Obrigado pela resposta, mas não funcionou.

Retire o que eu disse, OBRIGADO!!

Resolvido

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...