ИП2_лр08

advertisement
Лабораторная работа №08 по дисциплине "Информатика и программирование модуль 2"
ТЕМА: Работа с файлами.
---ОТОБРАЖЕНИЕ СПИСКОВ ФАЙЛОВ, ПАПОК И ДИСКОВ
-----------------------------------------1. Компонент TFileListBox
с вкладки Win3.1 окна "Tool Palette" предназначен
для отображения списка файлов папки (каталога) или диска Windows.
Ниже в таблице перечислены основные свойства компонента TFileListBox
и приведены краткие описания этих свойств.
Свойство
FileType
Описание
Указывает типы включаемых и не включаемых в список файлов.
ShowGlyphs
MultiSelect
FileEdit
FileName
Используются следующие подсвойства, принимающие значения
True или False и указывающие на атрибуты файлов:
ftReadOnly – только для чтения, ftHidden – невидимые,
ftSystem – системные, ftVolumeID – обозначения дисков,
ftDirectory – папки (каталоги), ftArchive – архивные,
ftNormal – не имеющие особых атрибутов.
Разрешает (True) или запрещает (False) показ пиктограмм файлов.
Разрешает (True) или запрещает (False) выбор нескольких файлов.
Имя компонента TEdit (чаще всего Edit1), при наличии которого в нем
отображается имя выбранного файла.
Свойство времени выполнения, значением которого является путь к
выбранному файлу и его имя.
2. При наличии в окне приложения компонентов TFileListBox, TDirectoryListBox
и TDriveComboBox рекомендуется установить между ними связи выбором
для свойств FileList и DirList значений, совпадающих с конкретными именами
соответствующих компонентов (обычно это имена FileListBox1
и DirectoryListBox1).
Это необходимо для взаимосвязанного отображения изменений в компонентах.
3. Компонент TDirectoryListBox
с вкладки Win3.1 окна "Tool Palette"
предназначен для отображения списка папок (каталогов) диска.
Ниже в таблице перечислены основные свойства компонента TDirectoryListBox
и приведены краткие описания этих свойств.
Свойство
DirLabel
FileList
Drive
Directory
Описание
Имя компонента TLabel (чаще всего Label1), при наличии которого в нем
отображается путь к текущей папке (каталогу) и ее имя.
Если путь полностью не помещается в области компонента TLabel,
то этот путь автоматически отображается в сокращенном виде.
Устанавливает связь с компонентом TFileListBox выбором значения,
совпадающего с конкретным именем компонента (обычно FileListBox1),
для отображения выбранным компонентом TFileListBox списка файлов
папки (каталога).
Свойство времени выполнения, значением которого является имя диска,
папки (каталоги) которого отображаются компонентом.
Свойство времени выполнения, значением которого является путь к
выбранной папке (каталогу) и ее имя.
4. Компонент TDriveComboBox
с вкладки Win3.1 окна "Tool Palette"
предназначен для отображения раскрывающегося списка дисков компьютера.
Ниже в таблице перечислены основные свойства компонента TDriveComboBox
и приведены краткие описания этих свойств.
Свойство
TextCase
DirList
Drive
Text
Описание
Указывает регистр буквы в имени диска: tcUpperCase – верхний или
tcLowerCase – нижний.
Устанавливает связь с компонентом TDirectoryListBox выбором значения,
совпадающего с конкретным именем компонента (обычно
DirectoryListBox1), для отображения выбранным компонентом
TDirectoryListBox списка папок (каталогов) диска.
Свойство времени выполнения, значением которого является имя
выбранного диска.
Свойство времени выполнения, значением которого является строка,
содержащаяся в окне раскрывающегося списка.
СОЗДАНИЕ ПРОГРАММЫ
-----------------ПРОГРАММА 8-1
------------5. Создайте приложение, при выполнении которого на экране появляется окно формы
с заголовком Проводник со следующими компонентами с вкладок Win3.1
и Standard окна "Tool Palette", расположенными следующим образом
(соответствующим расположению аналогичных элементов в окне программы
Проводник):
слева вверху непосредственно под заголовком окна формы –
компонент TDriveComboBox с отображением имени диска на верхнем регистре;
непосредственно ниже компонента TDriveComboBox –
компонент TDirectoryListBox
с шириной, равной ширине компонента BTDriveComboox,
и с высотой до нижней границы окна формы;
вверху непосредственно правее компонента TDriveComboBox –
компонент TLabel с белым цветом фона,
с высотой, равной высоте компонента TDriveComboBox,
и с шириной до правой границы окна формы,
предназначенный для отображения пути к текущей папке (каталогу) и ее имени
(имя этого компонента TLabel должно быть значением свойства DirLabel
компонента TDirectoryListBox);
на одном уровне с компонентом TDirectoryListBox и непосредственно правее его –
компонент TFileListBox с отображением пиктограмм файлов,
с возможностью выбора нескольких файлов,
с высотой, равной высоте компонента TDirectoryListBox,
и с шириной до правой границы окна формы.
При открытии диска и папки (каталога)
в области компонентов TDriveComboBox и TDirectoryListBox
ее содержимое должно отображаться в области компонента TFileListBox.
ФАЙЛЫ И ИХ ВИДЫ
--------------6. Файл – это именованная последовательность данных, расположенная
во внешней памяти компьютера (на диске, флэшке и т.д.) или связанная
с внешним устройством (обычно клавиатурой или видеомонитором).
Для поиска файла программным путем необходимо знать путь к файлу
(перечень имен вложенных папок, которые нужно последовательно открыть
для поиска файла, обычно начинается с имени диска и заканчивается
именем файла, например: D:\БГР-11-01\Иванов\file1.txt).
При поиске файла в текущей папке достаточно указать только имя файла.
Различают три вида файлов:
текстовые файлы (определяются типом данных Text или TextFile) – используются
для хранения текстовой информации (обычно в виде строк разной длины);
типизированные файлы (определяются типом данных File of Тип) – используются
для хранения однородной информации, например, только числовых данных
определенного типа;
нетипизированные файлы (определяются типом данных File) – используются
для быстрого доступа к файлу с любыми данными и пересылки данных
с высокой скоростью без потерь времени на преобразования данных.
Для работы с файлами необходимо в разделе описаний (объявлений) программы
определить файловую переменную (логический файл) с указанием файлового типа
данных, например:
var f1: text;
//Описание файловой переменной f1 для текстового файла
// Описание файловой переменной для
f2: file of Integer; // f2 f3: file of Real;
// f3 f4: file of String; // f4 f5: file;
типизированного файла
с целочисленным типом данных
с вещественным типом данных
со строковым типом данных
//Описание файловой переменной f5 для нетипизированного файла
ДОСТУП К ФАЙЛАМ
--------------7. В каждый момент времени для программы, работающей с файлом, доступен только
один элемент файла.
На этот элемент файла ссылается указатель текущей позиции файла,
который определяет место в файле, откуда происходит чтение
или куда происходит запись данных.
Чтение данных из файла и запись данных в файл
вызывают автоматическое перемещение указателя.
При чтении данных из файла указатель может достичь конца файла,
если чтение данных не завершится из-за выполнения какого-либо условия.
По способу доступа к элементам файла
различаются файлы последовательного доступа и прямого доступа.
К элементам файлов последовательного доступа доступ выполняется
в той же последовательности, с которой эти элементы записывались в файл.
Поиск элемента файла в этом случае выполняется последовательным перемещением
указателя до искомого элемента.
Для файлов последовательного доступа запрещено совмещение чтения и записи
данных.
К файлам последовательного доступа относятся текстовые файлы.
К элементам файлов прямого доступа доступ выполняется
по адресу (номеру) элемента, что существенно ускоряет процесс поиска элемента
файла.
Для файлов прямого доступа разрешено совмещение чтения и записи данных.
К файлам прямого доступа относятся типизированные и нетипизированные файлы.
НЕКОТОРЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ
-------------------------------------------------ВНИМАНИЕ! Пропустите п.8 с перечнем процедур и функций для работы с файлами
и переходите к выполнению п.9.
После п.8 указывается, с описанием каких процедур и функций из п.8
следует познакомиться при составлении очередной программы.
8. Для реализации действий с файлами могут быть использованы следующие процедуры
и функции:
ВНИМАНИЕ! Фраза "функция возвращает" практически всегда используется
вместо фразы "результатом выполнения функции является".
Процедура или функция
с именем и примером
перечня аргументов
Процедура
Append(f)
Процедура
AssignFile(f,file)
Описание
Открывает существующий текстовый файл, соответствующий
файловой переменной (логическому файлу) f,
для дозаписи, и ставит указатель в конец файла.
Если файл был ранее открыт с помощью процедуры Reset
или Rewrite, то выполнение процедуры Append закрывает
и повторно открывает файл уже для дозаписи.
Ставит в соответствие физическому файлу с именем file
(возможно, с путем доступа к нему) файловую переменную
(логический файл) f и поэтому эта процедура
должна предшествовать другим процедурам и функциям
для работы с файлами.
Имя физического файла file должно быть переменной,
константой или выражением строкового типа.
Дальнейшие операции с файловой переменной f будут
фактически выполняться с физическим файлом file.
Процедуру AssignFile нельзя использовать для открытого
файла. Перед повторным использованием файловой
переменной для другого физического файла необходимо
закрыть открытый файл процедурой CloseFile.
После выполнения процедуры AssignFile связь файловой
переменной с физическим файлом сохраняется до
следующего выполнения этой процедуры с той же файловой
переменной, что дает возможность нового открытия файла
процедурой Reset без повторного использования процедуры
AssignFile даже после закрытия файла.
Закрывает открытый файл, соответствующий
файловой переменной (логическому файлу)f.
Процедура
CloseFile(f)
Файл должен быть закрыт после завершения его обработки
во избежание потери данных.
При закрытии физический файл обновляется
и автоматически завершается символом конца файла.
Процедура или функция
с именем и примером
перечня аргументов
Описание
Для файла, соответствующего файловой переменной f,
проверяет достижение конца файла (End Of File).
Функция возвращает значение True при достижении конца
файла, в остальных случаях – значение False.
Функция
Eof(f)
Функция
FileExists(file)
Функция
FileSize(f)
Функция позволяет задать условие выполнения цикла для
считывания данных из файла до достижения конца файла.
При использовании этой функции без параметров
проверяется не достижение конца файла на диске, а ввод
символа конца файла с клавиатуры (например, сочетанием
клавиш Ctrl+Z).
Возвращает True, если физический файл с именем file
(возможно, с путем доступа к нему) существует.
Возвращает количество элементов файла, соответствующего
файловой переменной f.
Для пустого файла возвращает 0.
Для перемещения указателя в конец файла можно выполнить
Seek(f,FileSize(f));
Функция не используется для текстовых файлов.
Считывает из текстового или типизированного файла,
связанного с файловой переменной (логическим файлом) f,
начиная с позиции указателя, значения
в переменные в списке вывода x1,x2,...xN.
Процедура
Read(f,x1,x2,…xN)
Для текстового файла это могут быть значения разных
типов (integer, real, boolean, char, string и т.д.),
для типизированного файла тип переменных должен
совпадать с типом данных файла.
Для текстового файла использование только процедуры
Read дает возможность считывания лишь из текущей строки
этого файла.
Процедура
Readln(f,x1,x2,...xN)
Процедура
Reset(f)
Для считывания следующих друг за другом в текстовом
файле строк текста или для перехода к следующей строке
следует использовать процедуру Readln.
Считывает (только из текстового файла) то же,
что и процедура Read, но затем пропускает
оставшуюся часть текущей строки
и выполняет переход к началу новой строки.
Процедура Readln(f) без списка вывода
выполняет переход к началу новой строки.
Открывает существующий файл, соответствующий файловой
переменной (логическому файлу) f и ставит указатель
на начало первого элемента файла
или, для уже открытого файла, только ставит указатель
на начало первого элемента файла.
Текстовый файл открывается только для считывания.
Процедура или функция
с именем и примером
перечня аргументов
Описание
Создает и открывает для записи данных физический файл,
соответствующий файловой переменной (логическому файлу)
f. После успешного выполнения этой процедуры физический
файл готов к записи в него данных.
Процедура
Rewrite(f)
Процедура
Seek(f,N)
Процедура
Write(f,x1,x2,...xN)
Процедура
Writeln(f,x1,x2,...xN)
ВНИМАНИЕ! При выполнении процедуры Rewrite,
если физический файл с именем,
ранее заданным в процедуре AssignFile, уже существует,
то он заменяется пустым файлом с тем же именем,
в связи с чем для предотвращения потери информации
может потребоваться предварительное копирование файла.
Для файла, соответствующего файловой переменной
(логическому файлу)f, перемещает указатель файла
к элементу файла с номером N без чтения или записи
(номер начального элемента файла равен 0).
Для перемещения указателя в конец файла можно выполнить
Seek(f,FileSize(f));
Процедура не используется для текстовых файлов.
Записывает в текстовый или типизированный файл,
связанный с файловой переменной (логическим файлом) f,
начиная с позиции указателя, значения выражений
из списка вывода x1,x2,...xN.
Для текстового файла это могут быть значения разных
типов (integer, real, boolean, char, string и т.д.),
для типизированного файла тип значений должен совпадать
с типом данных файла.
Записывает (только в текстовый файл) то же,
что и процедура Write, но затем записывает
еще и признак конца строки.
Процедура Writeln(f) без списка вывода
записывает только признак конца строки.
ПРИМЕРЫ ПРОГРАММ ДЛЯ РАБОТЫ С ФАЙЛОМ ТЕКСТОВОГО ТИПА
---------------------------------------------------9. Здесь представлен фрагмент консольного приложения, записывающий
текст Text in file в находящийся в текущей папке файл File01.txt.
var f: text; //Описание файловой переменной (логического файла) f
begin
AssignFile(f,'File01.txt'); //Соответствие f и физического файла File01.txt
Rewrite(f); //Создание и открытие файла для записи
Writeln(f,'Text in file'); //Запись в файл текста Text in file
Closefile(f); //Закрытие файла
Readln;
end.
10. Здесь представлен фрагмент консольного приложения,
считывающий текст из файла File01.txt, находящегося в текущей папке,
и выводящий этот текст на экран.
var f: text; //Описание файловой переменной (логического файла) f
s: string; //Описание строки s
begin
AssignFile(f,'File01.txt'); //Соответствие f и физического файла File01.txt
Reset(f); //Открытие файла
Readln(f,s); //Считывание текста из файла в строку s
Closefile(f); //Закрытие файла
Writeln('Text from file:
',s); //Вывод на экран текста, записанного в файл
Readln;
end.
СОЗДАНИЕ ПРОГРАММ
----------------ПРОГРАММА 8-2
------------ВНИМАНИЕ! Перед созданием программы познакомьтесь с описанием следующих
процедур и функций применительно к текстовым файлам: AssignFile,
Rewrite, Append, CloseFile, Reset, Write, Writeln, Eof, Read, Readln.
11. Создайте оконное приложение, реализующее
создание в папке с этим проектом текстового файла
(имя файла должно совпадать с Вашей фамилией и иметь расширение txt)
или, если файл с таким именем уже существует, то его открытие;
дозапись в этот файл введенных строк текста;
чтение из этого файла всех строк текста;
перезапись этого файла после редактирования;
закрытие этого файла.
Для ввода имени файла используйте однострочное текстовое поле,
для расположения введенного и считанного текста
используйте многострочное текстовое поле
(должна быть предусмотрена также очистка этого текстового поля);
для запуска выполняемых действий
(создание, дозапись, чтение, перезапись, очистка, закрытие)
используйте кнопки.
Для добавления строк в многострочное текстовое поле
можно использовать метод Add,например, Memo1.Lines.Add(s).
Для очистки многострочного текстового поля
можно использовать метод Clear,например, Memo1.Clear.
Сразу после запуска приложения следует ввести имя файла
в однострочное текстовое поле и нажать кнопку "Создание или открытие файла",
после чего можно выполнять прочие действия в окне приложения.
ПРОГРАММА 8-3
------------ВНИМАНИЕ! Перед созданием программы познакомьтесь с описанием следующих
процедур применительно к типизированным файлам:
AssignFile, Rewrite, CloseFile, Reset, Write, Seek, Read.
12. Создайте оконное приложение, реализующее
создание в папке с этим проектом типизированного файла
с целочисленным типом данных
(имя файла должно совпадать с Вашей фамилией и иметь расширение int),
или, если файл с таким именем уже существует, то его открытие;
дозапись в этот файл введенных строк с целыми числами
(в каждой строке должно быть одно число)
с использованием функции StrToIntDef(s,0) для преобразования строки
в целое число (строка с не целым числом преобразуется в 0);
ввод номера элемента файла, начиная с которого будет происходить
чтение чисел из файла (элементы файла нумеруются с 0);
чтение из файла чисел, начиная с элемента с введенным номером,
(каждое из этих чисел в должно быть расположено в отдельной строке)
с использованием функции IntToStr(s) для преобразования целого числа
в строку;
перезапись этого файла после редактирования;
с использованием функции StrToIntDef(s,0) для преобразования строки
в целое число (строка с не целым числом преобразуется в 0);
закрытие этого файла.
Для ввода имени файла используйте однострочное текстовое поле,
для расположения введенных и считанных чисел
используйте многострочное текстовое поле
(должна быть предусмотрена также очистка этого текстового поля),
для ввода номера элемента файла используйте компонент TUpDown
(его свойство Position) с ассоциированным текстовым полем TEdit
(компонент TUpDown находится на вкладке Win32 окна "Tool Palette"),
для запуска выполняемых действий
(создание, дозапись, чтение, перезапись, очистка, закрытие)
используйте кнопки.
Для добавления строк в многострочное текстовое поле
можно использовать метод Add,например, Memo1.Lines.Add(s).
Для очистки многострочного текстового поля
можно использовать метод Clear,например, Memo1.Clear.
Сразу после запуска приложения следует ввести имя файла
в однострочное текстовое поле и нажать кнопку "Создание или открытие файла",
после чего можно выполнять прочие действия в окне приложения.
ОТЧЕТ О ВЫПОЛНЕНИИ РАБОТЫ
------------------------13. Продемонстрируйте тексты созданных программ,
а также их выполнение в среде программирования и независимо от нее.
________________________________________________________________________________
Download