- •Лабораторная работа № 6
- •Лабораторная работа 7
- •1. Домашнее задание
- •Лабоаторная работа №8
- •Лабораторная работа № 9 Работа с массивами в среде программирования «Delphi»
- •1. Теоретическая часть Реакция на события от мыши и клавиатуры
- •Интерфейс Drag&Drop
- •2. Лабораторные задания и методические указания по их выполнению
- •Лабораторная работа № 10
- •1. Теоретическая часть
- •Доступ к файлам
- •Подпрограммы для работы с файлами
- •Текстовые файлы
- •Подпрограммы для работы с текстовыми файлами
- •Подпрограммы для работы с типизированными файлами
- •TOpenDialog и tSaveDialog
- •2. Лабораторные задания и методические указания по их выполнению
- •394026 Воронеж, Московский просп., 14
2. Лабораторные задания и методические указания по их выполнению
В данной работе получает развитие программа, разработанная в ходе выполнения предыдущей работы, отдельное внимание будет уделяться разработке интерфейса, использованию компонентов TOpenDialog, TSaveDialog, TGroupBox, TRadioButton, TCheckBox, а также работе с файлами.
Н
48
Поместим на форму два компонента TGroupBox, назовем их GrBoxIn и GrBoxOut. На GrBoxIn установим три зависимых переключателя TRadioButton, а на GrBoxOut - два независимых переключателя TCheckBox. Переключателями TRadioButton можно будет выбрать источник данных (клавиатура, генератор случайных чисел или файл), а TCheckBox - вывод данных. Установим шрифт для GrBoxIn и GrBoxOut 10 размер, жирный; для TRadioButton и TCheckBox - 8 размер, обычный. Зависимые переключатели назовем RdBnKey, RdBnGen, RdBnFile и запишем в их свойства Caption соответственно "Ввод с клавиатуры", "Генератор случайных чисел" и "Получить данные из файла". Имена независимых переключателей:
36
CkBoxEdit и CkBoxFile, а Caption соответственно "Вывод данных на экран" и "Вывод данных в файл". Для RdBnKey и CkBoxEdit в инспекторе объектов свойство Checked установить True. Таким образом, при запуске программы эти переключатели окажутся выбранными по умолчанию.
На форму поместим кнопку TBitBtn, назовем ее BtBnOpen, установим Caption "Открыть файл". Эту кнопку сделаем доступной при условии выбора "Получить данные из файла" и недоступной при выборе другого варианта получения данных. Для этого в процедуре, обрабатывающей событие "OnClick" от RdBnFile, установим свойство Enabled кнопки BtBnOpen True, а в инспекторе объектов и обработчиках события "OnClick" от RdBnKey и RdBnGen свойство Enabled = False. Для того, что чтобы редакторы ввода элементов массива и вывода результатов очищались при выборе другого источника данных в соответствующих обработчиках "OnClick" вставим следующие строки edMassIn.Text:= '' и edResult.Text:= ''.
procedure TForm1.RdBnFileClick(Sender: TObject);
begin
edMassIn.Text:= ''; // очистим редактор ввода
edResult.Text:= ''; // очистим редактор вывода
lbMassIn.Caption:= 'Данные из файла';
BtBnOpen.Enabled:= True;
end;
Для того чтобы редактор вывода результата (edResult) и его заголовок (метка lbResult) были доступны или нет в зависимости от переключателя CkBoxEdit в обработчике события "OnClick" выполним проверку свойства Checked. Если True, то установим свойство Enabled редактора и метки True, иначе - False.
procedure TForm1.CkBoxEditClick(Sender: TObject);
begin
if CkBoxEdit.Checked then
begin
lbResult.Enabled:= True;
edResult.Enabled:= True;
end
else
begin
lbResult.Enabled:= False;
edResult.Enabled:= False;
48
end;
П
50
Исходные данные должны быть записаны в файл построчно, это позволит читать из файла сразу строку и после ее преобразования функцией Conv, описанной ранее, записать строкой в массив mas_a.
procedure TForm1.BtBnOpenClick(Sender: TObject);
var
F: TextFile;
37
i, st_i: integer;
s: string;
begin
i:= 1;
OpenDialog1.Filter:= 'Текстовые файлы|*.txt';
if not OpenDialog1.Execute then Exit;
if FileExists(OpenDialog1.FileName) then
begin
AssignFile(F, OpenDialog1.FileName);
Reset(F);
While not Eof(F) do
begin
Readln(F, s); // читаем строку
st_i:= Conv(s, i); // записываем строку в массив
Inc(i); // номер строки
end;
CloseFile(F);
end;
Look_Mas(st_i, i-1);
end;
Процедура Look_Mas используется для просмотра в редакторе edMassIn исходного массива. Редактор доступен только для чтения. Массив отображается в виде, как и при вводе с клавиатуры (строки отделены ";"). В Look_Mas передается количество строк (x) и элементов в строке (n). Работа этой процедуры поясняется комментариями.
Пример интерфейса программы показан на рисунке 7.
Рисунок 7 – Пример интерфейса программы
50
procedure Look_Mas(x, n: integer);
var
i, j: integer;
begin
Form1.edMassIn.ReadOnly:= True; // установим только чтение
for i:= 1 to n do // цикл по строкам
begin
for j:= 1 to x do // цикл по элементам строки
if j <> x then // отделяем числа пробелами
Form1.edMassIn.Text:= Form1.edMassIn.Text +
IntToStr(Mas_a[i, j])+ ' '
else // после последнего элемента строки пробел не ставим
Form1.edMassIn.Text:= Form1.edMassIn.Text +
IntToStr(Mas_a[i, j]);
if i <> n then
Form1.edMassIn.Text:= Form1.edMassIn.Text + '; '
else
Form1.edMassIn.Text:= Form1.edMassIn.Text + ';';
end;
Form1.edMassIn.SetFocus; // устанавливаем фокус ввода
end;
Задания:
1. Написать проверку количества элементов в строках массива, полученного при чтении файла.
2. Написать процедуру генератора случайных чисел, создать GroupBox с двумя редакторами TEdit для ввода размера массива и кнопки BitBtn для записи чисел в массив. Сделать его доступным при выборе соответствующего переключателя.
3. Написать процедуры для вывода в файл результатов работы программы, записать задание на обработку массива и исходных данных.
4. Обработать ситуации открывания несуществующего файла и перезаписи существующего.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
к выполнению лабораторных работ №6-10
для студентов специальности 200800 «Проектирование
и технология РЭС» очной и заочной формы обучения
Составители
Новикова Ирина Анатольевна
Хорошилов Валерий Николаевич
Подписано к изданию 18.01.2008
Уч. -изд. л. "С" 3,6
ГОУВПО «Воронежский государственный технический университет»