Запись в текстовый файл.
1. Задание: Создать типизированный файл, содержащий сведения об учениках некоторого класса (фамилия и две отметки за полугодие) и вывести фамилии учеников, занимающихся только на 4 и 5.
2. В рабочей области редактора наберите код программы, представленный на листинге 1.
Листинг 1.
PROGRAM Primer_3;
type { Описание типа "запись": сведения об ученике}
R = Record { фамилии учеников не должны содержать более}
{25 символов}
famil: String[25]; { Фамилия}
oc1 : 1..5; { Первая отметка}
oc2 : 1..5; { Вторая отметка}
end;
var F: File of R; { Описание файла записей}
a: R; { Сведения об одном ученике}
k: Integer; {Вспомогательная переменная - номер ученика}
BEGIN
Assign(F,'SPISOK.TXT'); (* Ввод списка класса *)
WriteLn('Ввод списка класса закончите нажатием ');
WriteLn('клавиши "^".');
Rewrite(F); { Файл открыли для записи }
k:=0; { Номер ученика }
Repeat
k:=k+1;
Write('Введите сведения на ',k,' ученика: ');
ReadLn(a.famil); { Запись в файл сведений об одном ученике }
If a.famil<>'^' then
begin
ReadLn(a.oc1);
ReadLn(a.oc2)
Write(F,a)
end;
WriteLn
until a.famil='^';
Close(F); { Закрываем файл }
(* Контрольный вывод списка класса *)
Reset(F); { Открываем файл для чтения }
WriteLn('Сведения об учениках класса: ');
While NOT EOF(F) do
begin {Чтение сведений об одном ученике из файла}
Read(F,a);
Write(a.famil,' ',a.oc1,' ',a.oc2);
WriteLn
end;
Close(F);
Reset(F); {Вывод списка успевающих учеников }
WriteLn('Список успевающих учеников: ');
While NOT EOF(F) do
begin
Read(F,a);
If (a.oc1>=4) AND (a.oc2>=4) { Успевающий ли ученик? } then WriteLn(a.famil)
end;
Close(F);
ReadLn
END.
3. Проведите отладку программы и проверьте результат в полученном текстовом файле.
2.2 Применение текстовых файлов.
1. Задание: В текстовом файле f.txt записаны (вперемешку) целые числа: поровну отрицательных и положительных. Используя только один вспомогательный файл, переписать в текстовый файл h.txt все эти числа так, чтобы:
§ порядок отрицательных чисел был сохранен;
§ порядок положительных чисел был сохранен;
§ любые два числа, стоящие рядом, имели разные знаки.
2. Решение: Если бы нам разрешили использовать два вспомогательных файла, мы бы просто переписали все положительные числа в один из них, а все отрицательные – в другой. А затем объединили бы два этих файла. В нашем же случае придется переписать во вспомогательный файл только положительные числа. Затем при «сборке» мы будем считывать из вспомогательного файла «все подряд», а из исходного – только отрицательные числа..
3. В рабочей области редактора наберите код программы, представленный на листинге 2.
Листинг 2.
Program z1;
var f,g,h: text;
k: integer;
begin
assign(f,’f.txt’);
assign(g,’g.txt’);
assign(h,’h.txt’);
{Переписываем положительные числа в доп.файл}
reset(f);
rewrite(g);
while not eof(f) do
begin read(f,k);
if k>0 then write(g,’ ‘,k);
end;
{Собираем числа в новый файл h.txt}
reset(f);{Возвращаем указатель на начало файла f}
reset(g);
rewrite(h);
while not eof(g) do
begin read(g,k);
write(h,k,’ ‘);
repeat
read(f,k)
until k<0;
write(h,k,’ ‘);
end;
close(f);
close(g);
close(h);
end.
4. Проведите отладку программы и проверьте результат в полученном текстовом файле.
2.3 Использование директив {$I}.
Задание: При помощи системной функции IOResult проверьте существование файла.
Наберите код программы, представленный на листинге 3.
Листинг 3.
. . .
flag:= false;
write('Введите имя файла: ');
repeat
readln(s); {s:string}
{$I-}
assign(f,s);
reset(f);
case IOResult of
0: flag:= true;
3: write('Путь к файлу указан неверно.
Измените путь: ');
5: write('Доступа к файлу нет. Измените имя файла: ');
152: write('Такого диска нет. Измените имя диска: ');
else write('Такого файла нет. Измените имя файла: ');
end;
until flag;
{$I+}
Проверьте работу программы путем задания правильного и неправильного имени файла (пути, диска).
ПРИМЕНЕНИЕ ОБЪЕКТНО-ОРИЕНТРОВАННЫХ КОМПОНЕНТОВ
В ИНСТРУМЕНТАЛЬНОЙ СРЕДЕ DELPHI
Общие замечания
Приступая к созданию законченного приложения Windows, необходимо помнить:
• Процесс создания программы в Delphi состоит из двух шагов: сначала нужно создать форму программы (диалоговое окно), затем — написать процедуры обработки событий. Форма приложения (так принято называть прикладные программы, работающие в Windows) создается путем добавления в форму компонентов и последующей их настройки.
• В форме практически любого приложения есть компоненты, которые обеспечивают интерфейс (взаимодействие) между программой и пользователем. Такие компоненты называют базовыми. К базовым компонентам можно отнести:
Label — поле вывода текста;
Edit — поле ввода/редактирования текста;
Button — командную кнопку;
CheckBox — независимую кнопку выбора;
RadioButton — зависимую кнопку выбора;
ListBox — список выбора;
ComboBox — комбинированный список выбора.
• Вид компонента, его размер и поведение определяются значениями свойств (характеристик) компонента (описание свойств базовых компонентов можно найти в описании практических заданий).
• Основную работу в программе выполняют процедуры обработки событий (описание основных событий можно найти в справочнике, во второй части книги).
• Исходную информацию программа может получить из полей ввода/редактирования (компонент Edit), списка выбора (компонент ListBox) или комбинированного списка (компонент ComboBox). Для ввода значений логического типа можно использовать компоненты CheckBoxи RadioButton.
• Результат программа может вывести в поле вывода текста (компонент Label) или в окно сообщения (функция MessageDlg).
• Для преобразования текста, например находящегося в поле ввода/редактирования, в целое число нужно использовать функцию StrToInt, а в действительное число — функцию StrToFloat, для преобразования целого, например значения переменной, в строку нужно использовать функцию intTostr, а для преобразования вещественного — функцию FloatToStr или FloatToStrF.
Дата добавления: 2017-01-26; просмотров: 1478;