Delphi ColorConsole цветная консоль в Delphi
unit ColorConsole;
interface
uses Windows, SysUtils;
// Вывод лога на консоль Windows с использованием цветов
procedure WriteConsole( S:String; Error:Boolean = false );
implementation
procedure WriteConsole( S:String; Error:Boolean = false );
var
Buffer : String;
i : Integer;
cnt : Integer;
TextColor : Word;
begin
if Error then
TextColor := FOREGROUND_RED Or FOREGROUND_INTENSITY
else
TextColor := FOREGROUND_RED Or FOREGROUND_GREEN Or FOREGROUND_BLUE;
// Конвертируем из Windows-кодировки в DOS
SetLength(Buffer,Length(S)); // Создаем буфер для конвертации
AnsiToOem(PChar(S),PChar(Buffer));
// Выводим дату и время
SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN + FOREGROUND_INTENSITY );
Write( DateTimeToStr( Now ) + ' ');
// Устанавливаем цвет текста
SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), TextColor );
Cnt := 0;
for i:=0 to Length(Buffer) do begin
if Buffer[i] = '"' then begin
inc(Cnt);
// Начало подстроки выделенной кавычками
if odd(Cnt) then begin
SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE),
FOREGROUND_BLUE Or FOREGROUND_GREEN Or FOREGROUND_INTENSITY );
end;
end;
Write( Buffer[i] );
// Окончание подстроки выделенной кавычками
if Buffer[i] = '"' then begin
if not odd(Cnt) then
SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), TextColor );
end;
end;
Writeln;
end;
end.