Подтвердить что ты не робот

Сохраненное ключевое слово в Delphi

Delphi позволяет сохранять ключевое слово при определении свойств следующим образом:

property Fields: TIndexDefs read FFields write SetFields stored FieldsStored;

Какова цель ключевого слова и что он делает?

4b9b3361

Ответ 1

Из моего файла справки Delphi 7:

Дополнительные сохраненные, по умолчанию и вызываются директивы nodefault спецификаторы хранения. У них нет влияние на поведение программы, но контролировать, сохранять или не сохранять значения опубликованных свойств в форме файлы.

Необходимо сохранить сохраненную директиву по True, False, имя булева поле или имя без параметров метод, возвращающий логическое значение. Например,

property Name: TComponentName read FName write SetName stored False;

Если свойство не имеет хранимой директивы, он обрабатывается так, как будто сохраненные True были указано.

Похоже, что он контролирует, сохранять или не сохранять свойство, относящееся к компоненту в файле .DFM для формы. (Только предположение, хотя)

Ответ 2

Это ключевое слово определяет, следует ли сохранить значение свойства в файле формы; по умолчанию это true. Может быть полезно избежать, например, сохранения больших фрагментов двоичной информации в вашем файле .dfm (например, компонент изображения, который должен читать его содержимое только во время выполнения).

Ответ 3

Хранимая директива принимает логическое значение: метод, который возвращает логический результат, ссылку на поле логического типа или константное выражение логического типа. RTT надлежащего записывает смещение поля, ссылку на метод или постоянное значение, и Delphis IDE использует эту информацию, чтобы решить, следует ли пропустить свойство из файла.dfm.

Среда IDE вызывает метод, проверяет значение полей или использует постоянное логическое значение, и если значение равно False, свойство не сохраняется в файл.dfm. Если сохраненное значение равно True, происходит поведение по умолчанию, а именно, что свойство сохраняется, если его значение отличается от значения по умолчанию.
Секреты и уловки

The stored directive is often misunderstood. Setting stored to True does not force Delphi to store the property value in the .dfm file. True is the default value of the stored directive. Instead, all you can do is omit the property from the .dfm file by setting stored to False.

You can use stored with properties at any access level, but it has meaning only for published properties.

If you use a method name, the method can be static or virtual, but not dynamic or a message handler.

A field reference can be a field name, a record member, or an array element with a constant index. The field reference must have a Boolean type.

Ссылка: https://www.oreilly.com/library/view/delphi-in-a/1565926595/re307.html