TApplicationEvents não funciona

Delphi

08/05/2009

Oi.

Estou usando o [b:a2bb0ca16c]TApplicationEvents[/b:a2bb0ca16c] para criar um log toda vez que gerar uma exceção. Para isso eu usei o evento [b:a2bb0ca16c]OnException[/b:a2bb0ca16c] do [b:a2bb0ca16c]TApplicationEvents[/b:a2bb0ca16c]

Adicionei o componente num Form ( não é o principal ).
Forcei uma exceção subir, mas o evento do applicationEvents não executa.

Porque isso ocorre!?


.lg.

.lg.

Curtidas 0

Respostas

Marcosrocha

Marcosrocha

08/05/2009

Como você está liberando sua Exception?
procedure TForm2.Button1Click(Sender: TObject);
begin
  raise Exception.Create(´Minha exceção!´);
end;

procedure TForm2.ApplicationEvents1Exception(Sender: TObject; E: Exception);
begin
  ShowMessage(E.Message);
end;



GOSTEI 0
.lg.

.lg.

08/05/2009

Fiz subir a exceção EInOutErro.

O applicationEvents no OnException:
procedure TfrmRetorno.aevRetornoException(Sender: TObject;
  E: Exception);
var
  LogName: string;
  ArqLog: TextFile;
begin
  LogName := ´Retorno.log´;
  AssignFile(ArqLog, LogName);
  if FileExists(LogName) then
    Append(ArqLog)
  else
    ReWrite(ArqLog); 
  try
    WriteLn(ArqLog, DateTimeToStr(Now) + ´:´ + E.Message);
    WriteLn(ArqLog, ´----------------------------------------------------------------------´);
    Application.ShowException(E);
  finally
    CloseFile(ArqLog);
  end;

  if (Application.MessageBox(PChar(´Foi gerado um erro.´+#13+´Deseja abrir o arquivo de log?´),
                             PChar(´Erro´), MB_YESNO+MB_ICONQUESTION) = mrYes) then begin
    ShellExecute(Application.Handle,
                 ´open´,
                 PChar(LogName),
                 ´´,
                 ´´,
                 SW_SHOWNORMAL);
  end;
end;


A exceção que gero ´EInOutErro´ é pelo fato de não dar um ´Reset()´ no arquivo para leitura quando ele cai no ´Eof()´.
procedure TfrmRetorno.GetReadFile;
var
  retFile: TextFile;
  stFileName: String;
  inIndex: Integer;
begin
  inIndex := 0;
  stFileName := edtDir.Text;
  AssignFile(retFile, stFileName);
  //Reset(retFile);

  try
    while not Eof(retFile) do begin
      inIndex := inIndex + 1;
      SetLength(stLinhas, inIndex);

      Readln(retFile, stLinhas[inIndex - 1]);
    end;
  finally
    CloseFile(retFile);
  end;
end;


Porque não executa o OnException :?:
Preciso dele.

Att,
.lg.


GOSTEI 0
POSTAR