Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет stden ([info]stden)
@ 2007-02-19 12:09:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
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.


(Добавить комментарий)


(Анонимно)
2007-08-24 15:47 (ссылка)
А можешь на какие-нить маны по консоли ссылку дать?
Давно интересовался темой, например отлова клавиши...

(Ответить) (Ветвь дискуссии)


[info]stden
2007-08-25 05:15 (ссылка)
Манов у меня нет. Мне их самому прийдется искать.

(Ответить) (Уровень выше)