TApplicationEvents não funciona
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!?
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.
Curtidas 0
Respostas
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.
08/05/2009
Fiz subir a exceção EInOutErro.
O applicationEvents no OnException:
A exceção que gero ´EInOutErro´ é pelo fato de não dar um ´Reset()´ no arquivo para leitura quando ele cai no ´Eof()´.
Porque não executa o OnException :?:
Preciso dele.
Att,
.lg.
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