在Ada中打印彩色文本-似乎无法使用ANSI转义码

时间:2018-08-04 01:29:24

标签: colors terminal ada

我想使用ANSI转义序列在Ada中打印样式文本。

这是我尝试过的:

with Ada.Text_IO; use Ada.Text_IO;
with Ada.Characters.Latin_1; use Ada.Characters.Latin_1;

procedure Main is
begin
  -- No ESC character
  Put_Line("\033[93mHowdy!\033[0m");
  Put_Line("033[31;1;4mHello\033[0m");
  -- With ESC character
  Put_Line(ESC & "\033[93m" & "Howdy!" & ESC & "\033[0m");
  Put_Line(ESC & "033[93m" & "Howdy!" & ESC & "033[0m");
  Put_Line(ESC & "033[31;1;4mHello" & ESC & "\033[0m");
  Put_Line(ESC & "Howdy"); -- Prints "owdy", i.e. escapes the H
end;

它们都不起作用!每个语句仅打印纯文本。

2 个答案:

答案 0 :(得分:2)

我想通了-我太近了!

事实证明,字符序列\033 ASCII转义字符,而不是带内信号的一部分。

这是一个非常简单的修复程序,使用ESC定义的Ada.Characters.Latin_1字符:

Put_Line (ESC & "[93m" & "Howdy!" & ESC & "[0m");

以橙色文字打印“ Howdy”。

答案 1 :(得分:0)

我想在Windows 10上执行此操作:它不适用于DOS控制台或Powershell。参见下面的图片。

批处理文件有效并且来自How to echo with different colors in the Windows command line

我认为这与此处说明的问题有关:UTF-8 on Windows with Ada

源代码http://tpcg.io/N1wORl或:

(bResult - aResult)

Bat file vs Ada output