Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Свойство класса - множество [D7]


anton20vlad ©   (2011-07-19 17:21:00) 

Всем привет, у меня такой вопрос:

Есть класс со свойством которое является множеством:


type
 TEnum = (eOne, eTwo, eThree);
 TEnumSet = set of TEnum;
 
 TA = class
 private
   FP: TEnumSet;
   procedure SetP(const Value: TEnumSet);
   function GetP(): TEnumSet;
 public
   property P:TEnumSet read GetP write SetP;
 end;


Теперь я хочу выполнить следующее:

....
var
 V: TA;
...
begin
  V := TA.Create();
  Include(V.P, eOne, eTwo);
  V.Free();
end;
....


На строке с Include ругается на этапе компиляции:
[DCC Error] Unit.pas(482): E2064 Left side cannot be assigned to

Так работает как ожидается:

....
var
 V: TA;
 S: TEnumSet;
...
begin
  V := TA.Create();
  S := V.P;
  Include(S, eOne, eTwo);
  V.P := S;
  V.Free();
end;
....


Я думаю есть вариант сделать Include(V.P, eOne, eTwo); без ошибок компилятора, но я о нём не знаю. Помогите советом, поиз


MBo   (2011-07-19 20:17:00) [1]

Include - не функция, а процедура,  без var не обойтись. Причем она ещё и compiler-magic.

Да и зачем это всё нужно - ведь +/- нагляднее, и уже давно привычнее.


Игорь Шевченко   (2011-07-19 20:12:00) [2]


> Че-то я не пойму как объявлена функция Include...


compiler magic


anton20vlad   (2011-07-19 17:53:00) [3]

Понял. Спасибо. Теперь у меня ещё один вопрос, а можно ли сделать оверлод для функции Include на вход которой будет подаваться множество но не как var параметр? Че-то я не пойму как объявлена функция Include...


MBo   (2011-07-19 17:48:00) [4]

include со свойствами не работает, а вот + можно использовать


Наверх

Титульная страница Поиск, карта сайта Написать письмо