Fórum Reaproveitar código Delphi #560319
16/08/2016
0
Boa tarde,
estou com algumas dúvidas para resumir meu código.
Um exemplo:
Tenho uma parte do código que trata as exceções gerais, utilizando um ApplicationEvents:
Log:= TStringList.Create;
if FileExists(ExtractFilePath(Application.ExeName)+'log.txt') then
Log.LoadFromFile(ExtractFilePath(Application.ExeName)+'log.txt');
Log.Add('');
Log.Add('Data: '+DateToStr(Now)+'Classe do Erro: '+E.ClassName);
Log.Add('Mensagem do Erro: '+E.Message);
Log.SaveToFile(ExtractFilePath(Application.ExeName)+'log.txt');
TFrmSvc(Sender).GetFormImage.SaveToFile('PrintScren.bmp');
ShowMessage('Um erro ocorreu, verifique o log em: '+ExtractFilePath(Application.ExeName)+' para mais informações');
Eu gostaria de reaproveitar esse código em outras exceções que eu trato com Try - Except;
Digitando todo esse código fica muito extenso, pois são várias partes do código em que tem try - except;
Quero reaproveitar o código somente para gravar um log de todas exceções.
estou com algumas dúvidas para resumir meu código.
Um exemplo:
Tenho uma parte do código que trata as exceções gerais, utilizando um ApplicationEvents:
Log:= TStringList.Create;
if FileExists(ExtractFilePath(Application.ExeName)+'log.txt') then
Log.LoadFromFile(ExtractFilePath(Application.ExeName)+'log.txt');
Log.Add('');
Log.Add('Data: '+DateToStr(Now)+'Classe do Erro: '+E.ClassName);
Log.Add('Mensagem do Erro: '+E.Message);
Log.SaveToFile(ExtractFilePath(Application.ExeName)+'log.txt');
TFrmSvc(Sender).GetFormImage.SaveToFile('PrintScren.bmp');
ShowMessage('Um erro ocorreu, verifique o log em: '+ExtractFilePath(Application.ExeName)+' para mais informações');
Eu gostaria de reaproveitar esse código em outras exceções que eu trato com Try - Except;
Digitando todo esse código fica muito extenso, pois são várias partes do código em que tem try - except;
Quero reaproveitar o código somente para gravar um log de todas exceções.
Tássio Gois
Curtir tópico
+ 0
Responder
Post mais votado
16/08/2016
private
{ Private declarations }
Function RegistrarLog(TFrmSvc:Tform; E_ClassName,E_Message:string):string;
Function Tfunc.RegistrarLog(Ttmp:Tform; E_ClassName,E_Message:string):string;
var Log:TStringList;
begin
Log:= TStringList.Create;
if FileExists(ExtractFilePath(Application.ExeName)+'log.txt') then
Log.LoadFromFile(ExtractFilePath(Application.ExeName)+'log.txt');
Log.Add('');
Log.Add('Data: '+DateToStr(Now)+'Classe do Erro: '+E_ClassName);
Log.Add('Mensagem do Erro: '+E_Message);
Log.SaveToFile(ExtractFilePath(Application.ExeName)+'log.txt');
//TFrmSvc(Sender).GetFormImage.SaveToFile('PrintScren.bmp');
ShowMessage('Um erro ocorreu, verifique o log em: '+ExtractFilePath(Application.ExeName)+' para mais informações');
end;
Testando
procedure TFunc.Button1Click(Sender: TObject);
var ValorIncial,QTD,Resultado:real;
begin
try
QTD:=30;
ValorIncial:=StrToFloat('d0s54');
Resultado:=ValorIncial/QTD;
except on e : exception do
RegistrarLog(Func,e.ClassName,E.Message);// Chamo minha funcção.
end;
end;
Arquivo de LOG Gerado >>
Data: 16/08/2016Classe do Erro: EConvertError
Mensagem do Erro: 'd0s54' is not a valid floating point value
Basta adaptar o que faltar
{ Private declarations }
Function RegistrarLog(TFrmSvc:Tform; E_ClassName,E_Message:string):string;
Function Tfunc.RegistrarLog(Ttmp:Tform; E_ClassName,E_Message:string):string;
var Log:TStringList;
begin
Log:= TStringList.Create;
if FileExists(ExtractFilePath(Application.ExeName)+'log.txt') then
Log.LoadFromFile(ExtractFilePath(Application.ExeName)+'log.txt');
Log.Add('');
Log.Add('Data: '+DateToStr(Now)+'Classe do Erro: '+E_ClassName);
Log.Add('Mensagem do Erro: '+E_Message);
Log.SaveToFile(ExtractFilePath(Application.ExeName)+'log.txt');
//TFrmSvc(Sender).GetFormImage.SaveToFile('PrintScren.bmp');
ShowMessage('Um erro ocorreu, verifique o log em: '+ExtractFilePath(Application.ExeName)+' para mais informações');
end;
Testando
procedure TFunc.Button1Click(Sender: TObject);
var ValorIncial,QTD,Resultado:real;
begin
try
QTD:=30;
ValorIncial:=StrToFloat('d0s54');
Resultado:=ValorIncial/QTD;
except on e : exception do
RegistrarLog(Func,e.ClassName,E.Message);// Chamo minha funcção.
end;
end;
Arquivo de LOG Gerado >>
Data: 16/08/2016Classe do Erro: EConvertError
Mensagem do Erro: 'd0s54' is not a valid floating point value
Basta adaptar o que faltar
Raimundo Pereira
Responder
Gostei + 1
Mais Posts
16/08/2016
Raimundo Pereira
private
{ Private declarations }
Function RegistrarLog(Ttmp:Tform; E_ClassName,E_Message:string):string;
Function Tfunc.RegistrarLog(Ttmp:Tform; E_ClassName,E_Message:string):string;
var Log:TStringList;
begin
Log:= TStringList.Create;
if FileExists(ExtractFilePath(Application.ExeName)+''log.txt'') then
Log.LoadFromFile(ExtractFilePath(Application.ExeName)+''log.txt'');
Log.Add('''');
Log.Add(''Data: ''+DateToStr(Now)+''Classe do Erro: ''+E_ClassName);
Log.Add(''Mensagem do Erro: ''+E_Message);
Log.SaveToFile(ExtractFilePath(Application.ExeName)+''log.txt'');
//TFrmSvc(Sender).GetFormImage.SaveToFile(''PrintScren.bmp'');
ShowMessage(''Um erro ocorreu, verifique o log em: ''+ExtractFilePath(Application.ExeName)+'' para mais informações'');
end;
Testando
procedure TFunc.Button1Click(Sender: TObject);
var ValorIncial,QTD,Resultado:real;
begin
try
QTD:=30;
ValorIncial:=StrToFloat(''d0s54'');
Resultado:=ValorIncial/QTD;
except on e : exception do
RegistrarLog(Func,e.ClassName,E.Message);// Chamo minha funcção.
end;
end;
Arquivo de LOG Gerado >>
Data: 16/08/2016Classe do Erro: EConvertError
Mensagem do Erro: ''d0s54'' is not a valid floating point value
Basta adaptar o que faltar
{ Private declarations }
Function RegistrarLog(Ttmp:Tform; E_ClassName,E_Message:string):string;
Function Tfunc.RegistrarLog(Ttmp:Tform; E_ClassName,E_Message:string):string;
var Log:TStringList;
begin
Log:= TStringList.Create;
if FileExists(ExtractFilePath(Application.ExeName)+''log.txt'') then
Log.LoadFromFile(ExtractFilePath(Application.ExeName)+''log.txt'');
Log.Add('''');
Log.Add(''Data: ''+DateToStr(Now)+''Classe do Erro: ''+E_ClassName);
Log.Add(''Mensagem do Erro: ''+E_Message);
Log.SaveToFile(ExtractFilePath(Application.ExeName)+''log.txt'');
//TFrmSvc(Sender).GetFormImage.SaveToFile(''PrintScren.bmp'');
ShowMessage(''Um erro ocorreu, verifique o log em: ''+ExtractFilePath(Application.ExeName)+'' para mais informações'');
end;
Testando
procedure TFunc.Button1Click(Sender: TObject);
var ValorIncial,QTD,Resultado:real;
begin
try
QTD:=30;
ValorIncial:=StrToFloat(''d0s54'');
Resultado:=ValorIncial/QTD;
except on e : exception do
RegistrarLog(Func,e.ClassName,E.Message);// Chamo minha funcção.
end;
end;
Arquivo de LOG Gerado >>
Data: 16/08/2016Classe do Erro: EConvertError
Mensagem do Erro: ''d0s54'' is not a valid floating point value
Basta adaptar o que faltar
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)