Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2022, 05:11   #1
Катя93
Пользователь
 
Регистрация: 11.01.2021
Сообщений: 48
По умолчанию Как создать ассоциативный массив для цветов?

Подскажите как создать ассоциативный массив, для цветов. Я изначально выбрала TStrings и TStringList. Записала вот так.
Код:
var
COLORS: TStrings;

  COLORS := TStringList.Create;
  COLORS.values['floor'] := '#d52b1e';
  COLORS.values['ceiling'] := '#ffffff';
  COLORS.values['wall'] := '#013aa6';
  COLORS.values['wallDark'] := '#012975';
  COLORS.values['rays'] := '#ffa600';
При попытке создать примитив Rectangle и присвоить ему значение.
Код:
Image1.Canvas.Brush.Color := COLORS.values['floor'];
Image1.Canvas.Rectangle(10,20,30,40);
Выдает ошибку.
Цитата:
[Error] RayCaster.pas(64): Incompatible types: 'TColor' and 'String'
Посмотрев некоторые статьи в интернете выяснила, что для цвета, нужно вместо решетки использовать знак доллара. Поэтому создала новый массив.
Код:
CColor:array[0..4] of tcolor=($d52b1e,$ffffff,$013aa6,$012975,$ffa600);
Вот так работает.

Код:
Image1.Canvas.Brush.Color := CColor[2];
Image1.Canvas.Rectangle(10,20,30,40);
Однако мне нужно сделать именно ассоциативный массив (ключ=>значение). Как это можно сделать для TColor в delphi7?

Последний раз редактировалось Катя93; 14.04.2022 в 05:14.
Катя93 вне форума Ответить с цитированием
Старый 14.04.2022, 08:16   #2
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Если задано конкретное кол цветов, легче прост осделать константами ?
Код:
const
   color1: Tcolor($ffffff);
   color2: Tcolor($ffffff);
   color3: Tcolor($ffffff);
   color4: Tcolor($ffffff);
   color5: Tcolor($ffffff);
uberchel вне форума Ответить с цитированием
Старый 14.04.2022, 10:54   #3
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Используйте TStringList с StringToColor/ColorToString или загуглите реализции, или сами напишите.
ForenLi вне форума Ответить с цитированием
Старый 14.04.2022, 11:26   #4
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

Цитата:
Сообщение от ForenLi Посмотреть сообщение
Используйте TStringList с StringToColor/ColorToString или загуглите реализции, или сами напишите.
Тут надо будет самому делать реализацию ибо delphi 7, в принципе не сложно, просто на сколько это нужно в данном проекте...
uberchel вне форума Ответить с цитированием
Старый 14.04.2022, 11:38   #5
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Ну это только ТС знает. Может это учебная задача с такими условиями, может просто ТС не придумал, как связать значения для комбобокса с массивом цветов и где-то прочитал про ассоц. массивы...
ForenLi вне форума Ответить с цитированием
Старый 15.04.2022, 13:37   #6
Катя93
Пользователь
 
Регистрация: 11.01.2021
Сообщений: 48
По умолчанию

Нашла подходящее решение.
Код:
function StrToColor(color: String): TColor;
begin
if color = '#d52b1e' then Result := $d52b1e;
if color = '#ffffff' then Result := $ffffff;
if color = '#013aa6' then Result := $013aa6;
if color = '#012975' then Result := $012975;
if color = '#ffa600' then Result := $ffa600;
end;
Катя93 вне форума Ответить с цитированием
Старый 15.04.2022, 13:40   #7
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

1. Искать не надо было, я упомянул стандартную StringToColor. Делающую тоже и чуть больше.
2. У вас нет ассоциативного массива здесь.
ForenLi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать ассоциативный массив ассоциативных массивов в ассоциативный массив вида [ключ] => 'параметр: значение' rustamcom2 PHP 1 15.06.2017 10:10
Массив, элементами которого является ассоциативный массив drka Общие вопросы Delphi 4 13.02.2015 09:19
Есть n цветов разных видов. Составьте все возможные сочетания букетов из всех этих цветов. Количество цветов и их названия вводит lesha18 Паскаль, Turbo Pascal, PascalABC.NET 1 26.02.2013 16:54
Как в VBA создать ассоциативный массив? Depressive Microsoft Office Excel 7 14.05.2011 15:36
Как создать массив из цветов? _Studentka_ Общие вопросы .NET 6 05.04.2010 11:53