показує, чи досягнуто кінець файлу.
Зверніть увагу, що наведене вище опис є нічим іншим, як декларацією інтерфейсу для роботи з об'єктами класу TDelimitedReader. Реалізація методів PutItem, SetActive, ParseLine, NextLine і GetEndOfFile на даний момент відсутня, однак для створення і використання примірників класу вона поки і не потрібна. p align="justify"> Властивості ООП
Окрім полів і методів в об'єктах існують властивості. При роботі з об'єктом властивості виглядають як поля: вони приймають значення і беруть участь у виразах. Але на відміну від полів властивості не займають місця в пам'яті, а операції їх читання і запису асоціюються із звичайними полями або методами. Це дозволяє створювати необхідні супутні ефекти при зверненні до властивостей. Наприклад, в об'єкті Reader присвоювання властивості Active значення True викличе відкриття файлу, а привласнення значення False - закриття файлу. Створення супутнього ефекту (відкриття або закриття файлу) досягається тим, що за привласненням властивості значення стоїть виклик методу. p align="justify"> Оголошення властивості виконується за допомогою зарезервованого слова property, наприклад:
type = class
...
FActive: Boolean;
...
// Метод запису (установки значення) властивості
procedure SetActive (const AActive: Boolean); Active: Boolean read FActive write SetActive;// Властивість
end;
Ключові слова read і write називаються специфікаторами доступу. Після слова read вказується поле або метод, до якого відбувається звернення при читанні (отриманні) значення властивості, а після слова write - поле або метод, до якого відбувається звернення при записі (установці) значення властивості. Наприклад, читання властивості Active означає читання поля FActive, а установка властивості - виклик методу SetActive. Щоб імена властивостей не збігалися з іменами полів, останні прийнято писати з літери F (від англ. Field). Ми надалі також будемо користуватися цією угодою. Почнемо з того, що перейменуємо поля класу TDelimitedReader: поле FileVar перейменуємо в FFile, Items - у FItems, а поле Delimiter - у FDelimiter. p align="justify"> type = class
// Поля: TextFile;// FileVar -> FFile: array of string;// Items -> FItems: Boolean;: Char;// Delimiter -> FDelimiter
...;
Звернення до властивостей виглядає в програмі як звернення до полів:
var: TDelimitedReader;: Boolean;
.... Active: = True;// Еквівалентно Reader.SetActive (True);: = Reader.Active;// Еквівалентно IsOpen: = Reader.FActive
Якщо один з специфікаторів доступу опущений, то значення властивості можна або тільки читати (заданий специфікатор read...