procedure TMyProg.AppException(Sender: TObject; E:
Exception);
var
MyError: TStringList;
Comp, Tmp1, Tmp2:
string;
begin
MyError :=
nil;
try
MyError := TStringlist.Create;
if FileExists(ChangeFileExt(ParamStr(0), '
.err')) = True
then
begin
MyError.LoadFromFile(ChangeFileExt(ParamStr(0), '
.err'));
MyError.Add('
');
MyError.Add('
');
end;
Tmp2 := '
Exception from ';
Tmp1 := '
';
while Length(Tmp1) < Length(Tmp2)
do
Tmp1 := Tmp1 + '
-';
Tmp1 := Tmp1 + '
-------------------';
MyError.Add(Tmp1);
MyError.Add(Tmp2 + FormatDateTime('
mm"/"dd"/"yyyy hh":"nn":"ss', Now));
MyError.Add(Tmp1);
MyError.Add('
');
//Meldung formatieren...
Comp := Trim(Sender.ClassName);
if Comp = '
'
then
Comp := '
Application';
try
Comp := Comp + '
[' + TControl(Sender).
Name + '
]';
except
try
Comp := Comp + '
[!!! ' + E.
Message + '
]';
except
end;
end;
Comp := Comp + '
: "' + E.
Message;
while pos(#13, Comp) > 0
do
Comp := copy(Comp, 1, pos(#13, Comp) - 1) + '
' + Copy(Comp, pos(#13,
Comp) + 1, Length(Comp));
Comp := Trim(Comp) + '
"';
if IsEncStarting = True
then
begin
Comp := Comp + #13#13 + GetResTxt(LangDll, 83);
end;
MyError.Add(Comp);
//Begrenzung
while MyError.Count > 2000
do
MyError.Delete(0);
while (MyError.Count > 0)
and (copy(MyError[0], 1, 1) <> '
-')
do
MyError.Delete(0);
MyError.SaveToFile(ChangeFileExt(ParamStr(0), '
.err'));
finally
MyError.Free;
end;
if (pos('
closed gracefully', LowerCase(E.
Message)) = 0)
and (pos('
read time',
LowerCase(E.
Message)) = 0)
and (IsClosing = False)
and (IsEP = False)
then
MessageDlg(E.
Message, mtError, [mbOK], 0);
EncError := True;
IsEP := False;
end;