- •Введение
- •Часть 1. Основные сведения о языке Free Pascal
- •Глава 1. Хранение данных
- •Глава 2. Основные операторы
- •Глава 3. Условные операторы
- •Глава 4. Циклы
- •Глава 5. Подпрограммы
- •Глава 6. Стандартные математические подпрограммы
- •Глава 7. Модификаторы подпрограмм
- •Глава 8. Инкремент и декремент
- •Глава 9. Работа с консолью
- •Глава 10. Массивы
- •Глава 11. Указатели
- •Глава 12. Динамическое распределение памяти
- •Глава 13. Процедурный тип
- •Глава 14. Множества
- •Глава 15. Обработка строк
- •Глава 16. Записи
- •Глава 17. Упакованные сущности
- •Глава 18. Перезагрузка операторов
- •Глава 19. Определение типа во время выполнения программы
- •Глава 20. Работа с файлами
- •Глава 21. Структура программы
- •Глава 22. Области видимости данных
- •Часть 2. Сопровождение и повышение надежности программ
- •Глава 1. Комментарии
- •Глава 2. Завершение программы
- •Глава 3. Параметры командной строки
- •Глава 4. Обработка ошибок
- •Глава 5. Модули
- •Часть 3. Объектно-ориентированное программирование
- •Глава 1. Принципы объектно-ориентированного программирования
- •Глава 2. Классы
- •Глава 3. Наследование
- •Глава 4. Вспомогательные классы
- •Глава 5. Ссылки на классы
- •Глава 6. Интерфейсы
- •Часть 4. Концепция объектов вне классов
- •Глава 1. Объекты без классов
- •Глава 2. Динамические объекты
- •Глава 3. Расширенные записи
- •Часть 5. Создание программ с графическим интерфейсом
- •Глава 1. Средства быстрой разработки
- •Глава 2. Описание элементов графического интерфейса
- •Глава 3. Проектирование в Lazarus
- •Глава 4. Основные элементы интерфейса
- •Глава 5. Диалоги
- •Глава 6. Таймер
- •Глава 7. Запуск программ
- •Заключение
- •Список литературы
Примеры неправильного создания объекта: New(point,point^.setup); и point:=New(test,point^.setup);
Пример правильного удаления объекта: Dispose(point,kill);
Пример неправильного удаления объекта: Dispose(point,point^.kill);
Глава 3. Расширенные записи
Отличия расширенной записи от объекта без класса
Free Pascal поддерживает расширенные записи. Они нужны для совместимости с Delphi 2006 и выше. Вы можете использовать их в своем коде, только если переключите компилятор в режим совместимости с Delphi. Расширенные записи похожи на объекты без класса, но имеют ряд отличий.
Отличия расширенной записи от объекта без класса:
1.Не поддерживается наследование
2.Запрещен спецификатор published
3.Конструкторы и деструкторы не используются
4.Запрещены абстрактные и виртуальные методы
Описание расширенной записи
Синтаксис описания расширенной записи:
Type имя=extended record Список элементов
End;
Вспомогательные расширенные записи
Вспомогательные расширенные записи применяются для расширения функционала расширенных записей. Вспомогательные расширенные записи похожи по предназначению на вспомогательные классы, но имеют ряд ограничений. Эти ограничения обусловлены спецификой расширенных записей.
Ограничения вспомогательных расширенных записей:
1.Не могут быть заменой вспомогательных классов
2.Доступны только в режиме совместимости с Delphi
3.Вы можете обращаться только к публичным членам расширенной записи
45