lazarus/lcl/utrace.pp
lazarus d78e403562 MG: changed license to LGPL
git-svn-id: trunk@997 -
2002-02-09 01:47:36 +00:00

72 lines
2.0 KiB
ObjectPascal

{
*****************************************************************************
* *
* This file is part of the Lazarus Component Library (LCL) *
* *
* See the file COPYING.LCL, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
}
unit utrace;
{$mode objfpc}{$H+}
interface
uses sysutils;
type
TAssertErrorProc = procedure(Const Msg,FN :ShortString;
LineNo,TheAddr : Longint);
var
TraceFileName : string;
OldProcPointer : Pointer; // the current Assert Error Handler
implementation
procedure TraceAssertHandler(Const Msg,FN : ShortString;LineNo,TheAddr : Longint);
var
fileH : Text;
begin
if LowerCase(LeftStr(Msg, 6)) = 'trace:' then
begin
Assign(fileH, TraceFileName);
{$I-}
if TraceFileName <> '' then
if FileExists(TraceFileName) = False then
begin
Rewrite(fileH);
Close(fileH);
end;
Append(fileH);
if ioresult = 0 then
Writeln(fileH, RightStr(Msg, Length(Msg) - 6));
Close(fileH);
{$I+}
end
else
TAssertErrorProc(oldProcPointer)(Msg, FN, LineNo, TheAddr);
end;
initialization
TraceFileName := '';
OldProcPointer := AssertErrorProc; // the current Assert Error Handler
AssertErrorProc := @TraceAssertHandler // set to new Assert Error Handler
end.