Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.11.06;
Скачать: CL | DM;

Вниз

Свойство класса - множество   Найти похожие ветки 

 
anton20vlad   (2011-07-19 17:21) [0]

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

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


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 17:48) [1]

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


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

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


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


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


compiler magic


 
MBo ©   (2011-07-19 20:17) [4]

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

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



Страницы: 1 вся ветка

Текущий архив: 2011.11.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.008 c
2-1311017214
R_R
2011-07-18 23:26
2011.11.06
Где находится VK_ENTER?


15-1310134286
Очень злой
2011-07-08 18:11
2011.11.06
Синхронизации папки пользователя при ее перенаправлении.


15-1310280412
Дмитрий С
2011-07-10 10:46
2011.11.06
Как правильно называются следующие вещи:


2-1310730839
Anthony
2011-07-15 15:53
2011.11.06
Изменить цвет выделения в TRichEdit


15-1310117366
Bober1
2011-07-08 13:29
2011.11.06
service application