
- •Ответы на вопросы
- •Основы визуального программирования. Понятие компонентов. Свойства компонента. Проектирование интерфейсных окон. Компиляция программ.
- •1.1. Краеугольные камни визуального программирования
- •1.3. Первый запуск среды Delphi
- •1.4. Исследуем среду разработки программ
- •Общие свойства компонентов
- •Понятие идентификатора. Зарезервированные (ключевые) слова. Стандартные идентификаторы. Идентификаторы программиста. Комментарии.
- •Комментарии
- •Понятие типа данных. Константы, переменные. Объявление типов, констант, переменных. Понятие типа данных
- •Константы
- •Переменные
- •. Определение новых типов данных
- •Простые типы данных (целочисленные, вещественные, символьные, булевые) Простые типы данных
- •2.3.1. Целочисленные типы данных
- •2.3.2. Вещественные типы данных
- •2.3.3. Символьные типы данных
- •2.3.4. Булевские типы данных
- •Перечисляемые и интервальные типы данных.
- •2.3.6. Перечисляемые типы данных
- •2.3.7. Интервальные типы данных
- •Выражения. Арифметические операции. Операции отношения. Булевские операции. Очередность выполнения операций.
- •2.4.1. Выражения
- •2.4.2. Арифметические операции
- •2.4.3. Операции отношения
- •2.4.4. Булевские операции
- •2.4.5. Операции с битами
- •2.4.6. Очередность выполнения операций
- •Операторы. Оператор присваивания. Оператор вызова процедуры. Составной оператор Операторы
- •2.7.1. Общие положения
- •2.7.2. Оператор присваивания
- •2.7.3. Оператор вызова процедуры
- •2.7.4. Составной оператор
- •Оператор ветвления if Оператор ветвления if
- •Оператор ветвления case . Оператор ветвления case
- •10 . Оператор повтора for.
- •11. Оператор повтора repeat
- •12. Оператор повтора while
- •13. Операторы Continue и Break
- •14. Подпрограммы. Стандартные подпрограммы.
- •2.8.1. Общие положения
- •2.8.2. Стандартные подпрограммы
- •15. Процедуры и функции программиста. Процедуры программиста
- •2.8.4. Функции программиста
- •16. Параметры процедур и функций. Структура модуля. Стандартные модули языка Delphi Параметры процедур и функций
- •Структура модуля
- •2.9.2. Стандартные модули языка Delphi
- •17. Область действия идентификаторов. Область действия идентификаторов
- •18. Строковые переменные. Операции над строками. Стандартные процедуры и функции для работы со строками. Строковые переменные
- •2.10.5. Операции над строками
- •Стандартные процедуры и функции для работы со строками
- •Массивы. Объявление массива. Работа с массивами. Динамические массивы Массивы
- •2.11.1. Объявление массива
- •2.11.2. Работа с массивами
- •Динамические массивы
- •Множества. Операции над множествами . Множества
- •2.12.1. Объявление множества
- •2.12.2. Операции над множествами
- •Записи. Записи
- •2.13.1. Объявление записи
- •2.13.2. Записи с вариантами
- •Файлы. Работа с файлами. Стандартные подпрограммы управления файлами
- •2.14. Файлы
- •2.14.1. Понятие файла
- •2.14.2. Работа с файлами
- •2.14.3. Стандартные подпрограммы управления файлами
- •Формула объекта. Три кита ооп
- •3.1. Краеугольные камни ооп
- •3.1.1. Формула объекта
- •3.1.5. Три кита ооп
- •Классы и объекты
- •3.2. Классы
- •3.3. Объекты
- •Конструкторы и деструкторы
- •3.4. Конструкторы и деструкторы
- •Методы классов
- •3.5. Методы
- •Свойства классов
- •3.6. Свойства
- •3.6.1. Понятие свойства
- •3.6.2. Методы получения и установки значений свойств
- •3.6.3. Свойства-массивы
- •3.6.4. Свойство-массив как основное свойство объекта
- •3.6.5. Методы, обслуживающие несколько свойств
- •28) Наследование
- •29) Перекрытие атрибутов в наследниках
- •30) Совместимость объектов различных классов
- •31) Понятие виртуального метода
- •32) Классы в программных модулях
- •33.Разграничение доступа к атрибутам объектов
- •34)Классы для представления списка строк
- •Свойства:
- •Методы:
- •События:
- •35. Классы для представления потока данных
- •Общие свойства:
- •Общие методы:
- •36. Обрабока исключительных ситуаций
- •4.3.1. Создание исключительной ситуации
- •4.3.2. Распознавание класса исключительной ситуации
- •4.3.3. Пример обработки исключительной ситуации
- •4.3.4. Возобновление исключительной ситуации
- •4.3.5. Доступ к объекту, описывающему исключительную ситуацию
- •37. .Защита выделенных ресурсов от пропадания
- •4.4.1. Утечка ресурсов и защита от нее
- •Сортировка массива методом прямого выбора
- •Сортировка массива методом прямого обмена (пузырьковым методом)
- •Сортировка массива методом прямого включения
- •Шейкерная сортировка
- •Сортировка массива с помощью включений с уменьшающимися расстояниями (метод Шелла)
- •Сортировка разделением (быстрая сортировка)
Общие свойства:
-
Position: Longint — текущая позиция чтения-записи.
-
Size: Longint — текущий размер потока в байтах.
Общие методы:
-
CopyFrom(Source: TStream; Count: Longint): Longint — копирует Count байт из потока Source в свой поток.
-
Read(var Buffer; Count: Longint): Longint — читает Count байт из потока в буфер Buffer, продвигает текущую позицию на Count байт вперед и возвращает число прочитанных байт. Если значение функции меньше значения Count, то в результате чтения был достигнут конец потока.
-
ReadBuffer(var Buffer; Count: Longint) — читает из потока Count байт в буфер Buffer и продвигает текущую позицию на Count байт вперед. Если выполняется попытка чтения за концом потока, то генерируется ошибка.
-
Seek(Offset: Longint; Origin: Word): Longint — продвигает текущую позицию в потоке на Offset байт относительно позиции, заданной параметром Origin. Параметр Origin может иметь одно из следующих значений: 0 — смещение задается относительно начала потока; 1 — смещение задается относительно текущей позиции в потоке; 2 — смещение задается относительно конца потока.
-
Write(const Buffer; Count: Longint): Longint — записывает в поток Count байт из буфера Buffer, продвигает текущую позицию на Count байт вперед и возвращает реально записанное количество байт. Если значение функции отличается от значения Count, то при записи была ошибка.
-
WriteBuffer(const Buffer; Count: Longint) — записывает в поток Count байт из буфера Buffer и продвигает текущую позицию на Count байт вперед. Если по какой-либо причине невозможно записать все байты буфера, то генерируется ошибка.
Ниже приводится фрагмент программы, демонстрирующий создание файлового потока и запись в него строки:
var Stream: TStream; S: AnsiString; StrLen: Integer;
begin // Создание файлового потока Stream := TFileStream.Create('Sample.Dat', fmCreate); ... // Запись в поток некоторой строки StrLen := Length(S) * SizeOf(Char); Stream.Write(StrLen, SizeOf(Integer)); // запись длины строки Stream.Write(S, StrLen); // запись символов строки ... // Закрытие потока Stream.Free; end; |
36. Обрабока исключительных ситуаций
4.3.1. Создание исключительной ситуации
Идея обработки исключительных ситуаций состоит в следующем. Когда подпрограмма сталкивается с невозможностью выполнения последующих действий, она создает объект с описанием ошибки и прерывает нормальный ход своей работы с помощью оператора raise. Так возникает исключительная ситуация.
raise EOutOfMemory.Create('Маловато памяти'); |
Данный оператор создает объект класса EOutOfMemory (класс ошибок исчерпания памяти) и прерывает нормальное выполнение программы. Вызывающие подпрограммы могут эту исключительную ситуацию перехватить и обработать. Для этого в них организуется так называемый защищенный блок:
try // защищаемые от ошибок операторы except // операторы обработки исключительной ситуации end; |
Между словами try и except помещаются защищаемые от ошибок операторы. Если при выполнении любого из этих операторов возникает исключительная ситуация, то управление передается операторам между словами except и end, образующим блок обработки исключительных ситуаций. При нормальном (безошибочном) выполнении программы блок except...end пропускается (рисунок 4.1).
Рисунок
4.1. Логика работы оператора try…except…end
При написании программы вы можете использовать вложенные защищенные блоки, чтобы организовать локальную и глобальную обработку исключительных ситуаций. Концептуально это выглядит следующим образом:
try // защищаемые операторы try // защищаемые операторы except // локальная обработка исключительных ситуаций end; // защищаемые операторы except // глобальная обработка исключительных ситуаций end; |
Исключительные ситуации внешнего защищенного блока, возникающие за пределами вложенного блока, обрабатываются внешней секцией except...end. Исключительные ситуации вложенного защищенного блока обрабатываются вложенной секцией except...end.