Gamedev LectureФорум

Лекция #1: Property в Delphi [Открытая] (комментарии)

#0
15:43, 26 фев 2006

Лекция #1: Property в Delphi [Открытая] (комментарии)

Это сообщение сгенерировано автоматически.

#1
15:43, 26 фев 2006

эх, народ - чегото я зашел в эту ветку по старой памяти - и не нашел ответа на старинный вопрос как в ObjectInspector выстроить property в произвольном порядке, а не по алфавите (default).

#2
8:43, 16 июля 2006

Не было указано, что проперти позволяют для класса перегрузить оператор [].
Допустим есть класс аццкого массива:

TInfernalArray = class
....
public
   property Element[i: Integer]: Integer read GetElement write SetElement; default;
end;

Тогда в юзать его можно будет так:

var
   arr: TInfernalArray;
   something: Integer;
begin
   arr := TInfernalArray.Create;
   ....
   arr[i] := something;
   ....
   something := arr[i];
   ....
end;
Прошло более 9 месяцев
#3
14:00, 26 апр 2007

В Delphi проперти существуют не просто для "экономии буковок". Если класс объявлен с директивой {$M+}, как, например, класс TPersistent, то в классе будет хранится информация о всех published пропертях и методах. Это даёт большие возможности (на которых и держится VCL). Например, мы можем получить значения всех пропертей, не зная ничего о классе, можем прочитать из файла значения пропертей и установить их. Причём get и set методы вызываются автоматически, если пользоваться функциями

function GetPropValue(Instance: TObject; const PropName: string;
  PreferStrings: Boolean = True): Variant;
procedure SetPropValue(Instance: TObject; const PropName: string;
  const Value: Variant);

из модуля TypInfo. Причём процедуру чтения пропертей класса из файла можно написать один раз, и она будет работать для всех классов одинаково. Тут уже "экономия буковок" может пойти на порядки, при грамотном использовании.

P.S. Я не из Эстонии, просто статью прочитал только что :)

Gamedev LectureФорум

Тема в архиве.