- •ЛР 1. Операторы и выражения Delphi
- •Оператор присваивания
- •Арифметические операторы
- •Оператор конкатенации строк
- •Логические операторы
- •Операторы поразрядного сдвига
- •Операторы отношения
- •Операторы множеств
- •Составной оператор begin..end
- •Условный оператор if..then..else
- •Оператор-селектор case
- •Оператор перехода goto
- •Оператор with..do
- •Организация циклов
- •Цикл с параметром for..do
- •Инструкция in в цикле for..do
- •Цикл с предусловием while..do
- •Цикл с постусловием repeat..until
- •Вложенные циклы
- •Операторы break и continue
- •ЗАДАНИЕ
- •Вариант 1.
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •ЛР 2. Структурные типы
- •Множества
- •Записи
- •Вариантные поля
- •Усовершенствованная запись
- •Массивы
- •Объявление массива
- •Обращение к ячейкам массива
- •Динамический массив
- •ЗАДАНИЕ
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •ЛР 3. Объекты и классы
- •Проектирование класса
- •Управление жизненным циклом объекта
- •Опережающее объявление класса
- •Ограничение видимости членов класса
- •Свойства объекта
- •Особенности объявления методов
- •Поля класса и методы класса
- •Иерархия наследования
- •Полиморфизм
- •ЗАДАНИЕ
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •ЛР4. Опорные классы VCL
- •Класс TObject
- •Класс TPersistent
- •Основа компонента, класс TComponent
- •Владение компонентом
- •Класс TControl
- •Принадлежность к родительскому контейнеру
- •Размещение и размеры элемента управления
- •События, связанные с изменением размеров
- •Выравнивание элемента управления в контейнере
- •Видимость и активность элемента управления
- •Задание
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант5
- •Совет
- •ЛР5. Обработка клавиатурных событий и событий мышки
- •Щелчки кнопками мыши
- •Перемещение указателя мыши
- •Вращение колесика мыши
- •Операция перетаскивания drag and drop
- •Обработка событий клавиатуры
- •Задание
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •ЛР 6. Классы потоков данных
- •Прототип потоков данных, класс TStream
- •Потоки с дескриптором, класс THandleStream
- •Файловый поток данных, класс TFileStream
- •Пример работы с файловым потоком данных
- •Задание
- •Вариант 1.
- •Вариант 2.
- •Вариант 3.
- •Вариант 4.
- •Вариант 5.
Языки программирования
end; end;
Щелчок по пункту меню активирует диалог открытия файла. В диалоговом окне пользователь выбирает для просмотра любой файл. Данные из файла считываются в массив, состоящий из 16 ячеек. Затем, после нумерации строк и несложного форматирования, текст построчно передается в компонент Memo1. Операция считывания повторяется вновь до тех пор, пока не доберется до конца файла.
Программа почти готова. Нам осталось написать 3 строки кода в обработчике события OnShow() формы проекта (листинг 6.5).
Листинг 6.5. Настройка многострочного редактора и диалога открытия файла
procedure TForm1.FormShow(Sender: TObject); begin
Memo1.Font.Name:='Courier New'; Memo1.ReadOnly:=True;
OpenDialog1.Filter:='Все файлы|*.*'; end;
Вам осталось откомпилировать проект и попробовать его в работе на каком-нибудь небольшом файле (рис. 6.2).
Рис. 6.2. Утилита просмотра файлов в шестнадцатеричном формате
Задание
Разработайте приложение на основе класса TFileStream обеспечивающее следующий функционал
Вариант 1.
1.Заполнение файла A размерности N (указывается пользователем) случайными целыми числами в диапазоне от 0 до 255.
64
СКФУ Кафедра компьютерной безопасности
Языки программирования
2.Разделение файла A на файлы B и C. Причём в файл B должны попасть только чётные значения из A, а в B — нечётные.
3.Сохраните содержимое файла A в файл D так, чтобы его значения следовали в обратном порядке.
4.Напишите функцию на вход которой поступает полный путь и имя файла, и возвращающую сумму значений элементов файла.
Вариант 2.
1.Заполнение файла A размерности N (указывается пользователем) случайными вещественными числами в диапазоне от -1 до 1.
2.Разделение файла A на файлы B и C. Причём в файл B должны попасть только отрицательные значения из A, а в B — положительные.
3.Сохраните содержимое файла A в файл D так, чтобы его значения следовали в обратном порядке.
4.Напишите функцию, на вход которой поступает полный путь и имя файла, и возвращающую сумму значений элементов файла.
Вариант 3.
1.Заполнение файла A размерности N (указывается пользователем) случайными строчными символами латинского алфавита (1-битная кодировка ANSI).
2.Разделение файла A на файлы B и C. Причём в файл B должны попасть только символы из A обозначающие гласные буквы, а в B — согласные.
3.Сохраните содержимое файла A в файл D так, чтобы его значения следовали в обратном порядке.
4.Напишите функцию, на вход которой поступает полный путь и имя файла, и возвращающую число гласных символов в файле.
Вариант 4.
1.Заполнение файла A размерности N (указывается пользователем) случайными строчными символами русского алфавита (1-битная кодировка
ANSI).
2.Разделение файла A на файлы B и C. Причём в файл B должны попасть только символы из A обозначающие гласные буквы, а в B — согласные.
3.Сохраните содержимое файла A в файл D так, чтобы его значения следовали в обратном порядке.
4.Напишите функцию, на вход которой поступает полный путь и имя файла, и возвращающую число гласных символов в файле.
65
СКФУ Кафедра компьютерной безопасности
Языки программирования
Вариант 5.
1.Заполнение файла A размерности N (указывается пользователем) случайными булевыми значениями (boolean).
2.Сохраните содержимое файла A в файл D так, чтобы его значения следовали в обратном порядке.
3.Инвертируйте содержимое файла A и сохраните его в файл E.
4.Напишите функцию, на вход которой поступает полный путь и имя файла, и возвращающую число гласных символов в файле.
66
СКФУ Кафедра компьютерной безопасности