Как сменить цвет при выводе io.write

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Как сменить цвет при выводе io.write

Post by Max Rusov »

Вывожу собщение об ошибке:

io.write("Error code: " .. ErrorCode);

Хочу, чтобы оно было красным. Можно как то добиться?
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Как сменить цвет при выводе io.write

Post by Shmuel »

Видимо можно разными способами (точно можно, используя FFI).
Вот пример, использующий приложенную библиотеку cons (положить в %farprofile%\Macros\lib32 или lib64)

Code: Select all

local cons = require "cons"
local GRAY = 0x07
local RED  = 0x0C

local hndl = cons.GetStdHandle("STD_OUTPUT_HANDLE")
hndl:SetConsoleTextAttribute(RED)
io.write("Hello\n")
hndl:SetConsoleTextAttribute(GRAY)
io.write("Hello\n")
cons.7z
(17.96 KiB) Downloaded 138 times
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Как сменить цвет при выводе io.write

Post by citRiks »

Shmuel, А исходников нету от этого?
Как другой вариант, при наличии ansicon.exe:
lua:far.Timer(100, function(sender) io.write(string.char(27).."[35;1mX") end)
получится смишно
Last edited by citRiks on Wed 19 May, 2021 12:00, edited 1 time in total.
Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Как сменить цвет при выводе io.write

Post by Shmuel »

citRiks wrote: Wed 19 May, 2021 11:56 А исходников нету от этого?
https://github.com/shmuz/winconsole
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Как сменить цвет при выводе io.write

Post by Max Rusov »

Спасибо, все получилось.

Использую в макросе Edt-Run.lua, удобен для активной работы с консольными утилитами.

Shmuel
Posts: 6834
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Как сменить цвет при выводе io.write

Post by Shmuel »

Max Rusov, ваш скрипт можно немного укоротить:

1. Убрать condition и SuitableFile(), вместо этого добавить filemask="*.txt".
Этот вариант лучше ещё и тем, что поддерживается система масок Фара (несколько масок, маски исключения, регулярные выражения).

2. Пять строчек, начиная от "if res == 0", можно заменить на одну: SetColor(res==0 and GREEN or RED)
Post Reply

Return to “Нужна помощь”