Personally I'd write the function as something like "function GenerateColorCode(codes: array of Byte): ansistring;", mostly in anticipation of pure functions, because then the compiler can just replace the call with the relevant string at compile time, but that's a long way off!

Gareth aka. Kit

On 22/11/2020 16:58, Ryan Joseph via fpc-devel wrote:

On Nov 22, 2020, at 9:29 AM, Florian Klämpfl via fpc-devel 
<fpc-devel@lists.freepascal.org> wrote:

Because I have no Mac so I couldn't test it.
I see. It's this easy.

const
   ANSI_FORE_BLACK           = 30;
   ANSI_FORE_RED             = 31;
   ANSI_FORE_GREEN           = 32;
   ANSI_FORE_YELLOW          = 33;
   ANSI_FORE_BLUE            = 34;
   ANSI_FORE_MAGENTA         = 35;
   ANSI_FORE_CYAN            = 36;
   ANSI_FORE_WHITE           = 37;
   ANSI_FORE_RESET           = 39;

   ANSI_BACK_BLACK           = 40;
   ANSI_BACK_RED             = 41;
   ANSI_BACK_GREEN           = 42;
   ANSI_BACK_YELLOW          = 43;
   ANSI_BACK_BLUE            = 44;
   ANSI_BACK_MAGENTA         = 45;
   ANSI_BACK_CYAN            = 46;
   ANSI_BACK_WHITE           = 47;
   ANSI_BACK_RESET           = 49;

   ANSI_STYLE_BOLD           = 1;
   ANSI_STYLE_ITALIC         = 3;
   ANSI_STYLE_UNDERLINE      = 4;
   ANSI_STYLE_BLINK          = 5;


procedure PrintColor(codes: array of byte; str: ansistring);
var
   attrs: string;
   code: byte;
begin
   attrs := '';
   for code in codes do
     begin
       if attrs <> '' then
         attrs += ';';
       attrs += IntToStr(code);
     end;
   writeln(#&033,'[',attrs,'m',str,#&033,'[',0,'m');
end;

// prints a blinking, bold red text on a white background
PrintColor([ANSI_BACK_WHITE, ANSI_FORE_RED, ANSI_STYLE_BLINK, ANSI_STYLE_BOLD], 
'Hello World');

Regards,
        Ryan Joseph

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel


--
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to