unit unilog;
interface
uses Classes, SysUtils, Dialogs;
type
TLogProc = procedure(n: integer; s: string);
var
LogLines: TStrings;
Log: TLogProc;
logmask: set of byte;
logshift: integer;
procedure Log1(n: integer; s: string);
procedure Log2(n: integer; s: string);
procedure log_s(Name: string; params: string = '');
procedure log_f(Name: string);
implementation
procedure Log1(n: integer; s: string);
begin
if n in logmask then
ShowMessage(IntToStr(n) + ':' + s);
end;
procedure Log2(n: integer; s: string);
begin
if (LogLines <> nil) and (n in logmask) then
LogLines.Add(s);
end;
procedure log_s(Name: string; params: string = '');
begin
log(110, StringOfChar(' ', logshift) + Name + '(' + params + ')');
Inc(logshift, 3);
end;
procedure log_f(Name: string);
begin
Dec(logshift, 3);
log(110, StringOfChar(' ', logshift) + 'end ' + Name);
end;
begin
logshift := 0;
logmask := [0..100];
log := @Log2;
LogLines := nil;
end.