Получить RGB составляющие цвета из строки с наименованием цвета из буфера обмена

Pascal ABC.NET

В справке (Стандартные модули\Модуль GraphABC\) есть таблица "Цветовые константы".

Цветовые константы представлены в виде некоего "наименования цвета".

Например, у цвета "золотой" имя "clGold".

Эти цветовые константы были скопированы из справки и вставлены в Word в таблицу.

То есть, имеется ячейка таблицы в Word-е, в которой хранится значение (наименование) цвета.

Захотел залить ячейку цветом, наименование которого в ячейке хранится.

===

Написал небольшую программу, в которую (в переменную "с") ввожу скопированное из ячейки Word-а значение.

Программа получает из наименования Цвета его RGB-значения и записывает это в текстовый файл.

Далее в модуле GraphABC рисуется небольшой прямоугольник и заливается Цветом.

===

В Word-е на ленте разместил кнопку, к которой привязал маленькую программу, написанную на

VBA. Прграммка читает из текстового файла строку с RGB-значением Цвета, получает из строки RGB-значения Цвета. И заливает ячейку Цветом.

===

Так все работает.

Вот программа:

PascalВыделить код

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

##
uses System.Windows.Forms, GraphABC;
 
 
SetWindowSize(250, 120);
SetWindowCaption('цвета и r g b - значения');
 
//var c := Clipboard.GetText;       // переменная - цвет !!! получаем из буфера обмена
{Это не работает. Компилятор ругается "Нельзя преобразовать тип string к System.Drawing.Color"}
 
//var cl := c.ToColor;
var c: color := clGold;
 
var r := GetRed(c);     // Возвращает красную составляющую цвета
var g := GetGreen(c);   // Возвращает зеленую составляющую цвета
var b := GetBlue(c);    // Возвращает синюю составляющую цвета
println(c);                   // печать названия цвета
var color: string := r.ToString + ', ' + g.ToString + ', ' + b.ToString;
WriteAllText('d:PABCWork.NETcolor.txt', color); 
 
print(r, g, b);               // печать r g b - значения цвета
setpenwidth(1);               // установили толщину пера = 1
setpencolor(clGray);          // установили цвет пера
 
moveTo(50, 50);       // перо в точку 50, 50
lineTo(200, 50);      // линия до точки 200, 50
lineto(200, 100);     // линия до точки 200, 100
lineto(50, 100);      // линия до точки 50, 100
lineto(50, 50);       // линия до точки 50, 50      
floodfill(75, 75, c); // от точки 75, 75 заливаем цветом

===

Захотел исключить из цепочки действий (копирование из ячейки Word-а значения Цвета → вставка этого значения в программу) второе звено цепочки - вставку. Пусть программа получает строку со значением цвета из буфера обмена. Получать-то она получает, но дальше при попытке получить из строки значение GetRed(c) начинает ругаться "Нельзя преобразовать тип string к System.Drawing.Color"

Может быть кто-то поможет справиться с этим местом:

PascalВыделить код

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

##
uses System.Windows.Forms, GraphABC;
 
 
SetWindowSize(250, 120);
SetWindowCaption('цвета и r g b - значения');
 
var c := Clipboard.GetText;       // переменная - цвет !!! получаем из буфера обмена
{Это не работает. Компилятор ругается "Нельзя преобразовать тип string к System.Drawing.Color"}
 
//var cl := c.ToColor;
//var c: color := clGold;
 
var r := GetRed(c);     // Возвращает красную составляющую цвета
var g := GetGreen(c);   // Возвращает зеленую составляющую цвета
var b := GetBlue(c);    // Возвращает синюю составляющую цвета
println(c);                   // печать названия цвета
var color: string := r.ToString + ', ' + g.ToString + ', ' + b.ToString;
WriteAllText('d:PABCWork.NETcolor.txt', color);

===

Если мою просьбу изложить коротко, без предисловия, то

нужно из строки с наименованием цвета (например clGold) получить RGB-составляющие цвета.