Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Работа с файлами последовательного доступа



 

Последовательным доступом называется способ, при котором данные считываются последовательно от начала файла. Чаще всего он применяется для считывания данных из текстового файла формата TXT, в котором содержится последовательность ASCII-кодов символов. Каждая запись в таком файле представляет собой строку символов, заканчивающуюся кодами управляющих символов «13» и «10» (которые называются соответственно «возврат каретки» и «перевод строки»).

Для открытия текстового файла используется оператор

Open имя_файла For тип_доступа As # номер

Здесь имя_файла – имя открываемого файла с указанием пути доступа к нему, тип_доступа – тип доступа ( Input – для чтения, Output – для вывода, Append – для добавления), номер – порядковый номер от 1 до 255. В дальнейшем при работе с открытым файлом указывается не имя, а его порядковый номер.

Чтобы закрыть файл используется оператор Close (номер).

Для считывания одной строки из открытого для чтения текстового файла используется оператор Input:

Input # номер, имя_переменной

где имя_переменной – имя переменной типа String.

При открытии файла в его начало автоматически устанавливается так называемый «файловый указатель». После команды Input он перемещается к началу следующей строки. После считывания всех строк он устанавливается в конец файла. При попытке выполнить еще одну команду Input в этом случае будет выдано сообщение об ошибке (код 62).

Для того, чтобы избежать аварийного завершения программы можно использовать логическую функцию EOF (номер), где номер – номер открытого файла. Например, для считывания данных из текстового файла A.TXT в строковый массив MAS(i) можно использовать цикл типа Do Until … Loop:

 

i=0

Do Until EOF (1)

i=i+1

Input # 1, MAS(i)

Loop

Полезной может оказаться также функция LOF (номер), возвращающая количество байтов памяти, занимаемых открытым файлом.

Запись данных в файл, открытый для записи, осуществляется командой

Print #номер, список_вывода

Здесь список_вывода – одна или несколько переменных (или строки символов, взятые в кавычки), разделенных либо запятыми (, ), либо точками с запятой (; ). В первом случае выводимые значения будут записаны в виде одной строки и разделены пробелами, во втором – выведены без разделителя, слитно. Если поставить точку с запятой в конец списка вывода, то следующая порция данных, выводимая оператором будет дописана в ту же строку.

Например, в результате выполнения двух операторов

Print #1, “Иванов”

Print #1, “Петров”

в открытым для вывода под номером 1 файле окажутся две строки по одной фамилии в каждой.

Если в конец первого оператора поставить точку с запятой:

Print #1, “Иванов”;

Print #1, “Петров”

то будет записана одна строка в виде «ИвановПетров».

Следует отметить, что при попытке открыть для чтения несуществующий файл, будет выдано сообщение об ошибке (код ошибки 53). Если же дана команда открыть несуществующий файл для вывода или добавления, сообщения об ошибке не будет, файл с указанным именем будет создан.

 

 

Порядок выполнения.

1. Исходные данные – текстовые файлы, содержащие данные в соответствии с указанным в варианте заданием, – студент должен подготовить самостоятельно, используя текстовый редактор «Блокнот».

2. В каждом из вариантов требуется разработать программу, с помощью которой исходный файл (или файлы) открывается для чтения, данные считываются, обрабатываются и результаты записываются в новый файл.

3. При разработке проекта необходимо предусмотреть возможность вывода на форму в текстовые окна содержимое как исходных файлов, так и создаваемых для того, чтобы можно было сразу оценить правильность работы программы.

 

Варианты задания.

 

1. Текстовый файл содержит несколько строк с фамилиями студентов. Создать новый файл, в котором будут те же фамилии, но расположенные в алфавитном порядке.

 

2. Текстовый файл содержит одну строку, в которой записаны фамилии, разделенные пробелами. Создать новый файл, в котором будут те же фамилии, но расположенные в разных строках.

 

3. Текстовый файл содержит несколько строк, в каждой из которых записано целое число. Разделить этот файл на два, записав в один только четные числа, а в другой – нечетные.

 

4. Текстовый файл А содержит две строки с текстом, а файл В – одну строку. Создать файл С, в котором будут эти же три строки, но строка из файла В должна оказаться между строками из файла А.

 

5. Текстовый файл А содержит текст из заглавных (прописных) русских букв. Создать файл В, в котором будет тот же текст, но из строчных букв.

6. Текстовый файл А содержит текст с русскими и латинскими символами. Создать новый файл В, котором из этого текста будут удалены латинские символы.

 

7. Текстовый файл содержит три строки символов. Создать новый файл, в котором эти строки будут записаны в обратном порядке.

 

8. В текстовых файлах А и В записаны два массива по N чисел в каждом, каждое число в отдельной строке. Создать файл из N строк, в каждой из которых записана сумма соответствующих чисел из файлов А и В.

 

9. В файле А построчно записаны фамилии студентов. В файле В – две фамилии из тех, которые приведены в А. Создать файл, в который записать все фамилии из файл А кроме тех, что указаны в файле В.

 

10. Текстовый файл А содержит несколько строк с фамилиями студентов, а В – строки с их именами. Создать новый файл, в котором строки будут содержать фамилии тех же студентов вместе с их именами.

 

11. Текстовый файл содержит несколько строк с фамилиями. Создать файл, в котором эти фамилии будут записаны в одну строку и разделены запятыми.

 

12. В текстовом файле А записаны целые четные числа, в файле В – нечетные. Количество четных и нечетных чисел может быть разным. Создать файл, в котором будет одинаковое количество четных и нечетных чисел, причем они чередуются.

 

13. Текстовые файлы А и В содержат по две строки с текстом. Создать файл С, в котором будут эти же строки, в следующем порядке: 1-я из А, 1-я из В, 2-я из А, 2-я из В.

 

14. Текстовый файл А содержит текст из строчных русских букв. Создать файл В, в котором будет тот же текст, но из заглавных (прописных) букв.

 

15. Текстовый файл А содержит текст с русскими и латинскими буквами. Создать новый файл В, котором из этого текста будут удалены русские буквы.

 

16. Текстовый файл А содержит три строки символов. Создать новый файл, в котором будет только первая и третья строки из А.

 

17. В текстовых файлах А и В записаны два массива по N чисел в каждом, каждое число в отдельной строке. Создать файл из N строк, в каждой из которых записано меньшее из соответствующих чисел из файлов А и В.

 

18. В файле А построчно записаны фамилии студентов. В файле В – одна фамилия из тех, которые приведены в А. Создать файл, в который записать все фамилии из файл А, которые записаны после указанной в файле В фамилии.

 

19. Текстовый файл содержит несколько строк с фамилиями. Создать файл, в котором эти фамилии будут записаны в одну строку и разделены пробелами.

 

20. Текстовый файл А содержит текст с русскими и латинскими буквами. Создать новый файл В, заменив в тексте все латинские буквы звездочками (*).

 

21. Текстовый файл содержит одну строку, в которой записаны фамилии, разделенные запятыми. Создать новый файл, в котором будут те же фамилии, но расположенные в разных строках.

 

22. В файле А построчно записаны фамилии студентов. В файле В – одна фамилия из тех, которые приведены в А. Создать файл, в который записать все фамилии из файл А, которые записаны перед указанной в файле В фамилией.

 

23. В текстовых файлах А и В записаны два массива по N чисел в каждом, каждое число в отдельной строке. Создать файл из N строк, в каждой из которых записано большее из соответствующих чисел из файлов А и В.

 

24. В файле А построчно записаны фамилии студентов. В файле В – две фамилии, одна из них есть в А, другой нет. Создать файл, в который записать все фамилии из файла А и добавить из В новую.

 

 

Лабораторная работа № 7

Работа с дисками и папками

На панели инструментов окна Visual Basic есть три объекта, с помощью которых можно осуществлять просмотр существующих на диске папок и выбрать нужные файлы для последующей работы с ними.

Это объекты DriveListBox (список дисков), DirListBox (список папок) и FileListBox (список файлов). При размещении экземпляров этих объектов на форму им будут присвоены имена соответственно Drive1, Dir1 и File1.

Основным свойством объекта Drive1 является свойство Drive – имя выбранного диска из числа доступных в данный момент. Присвоение значения этому свойству происходит после выбора нужного имени из списка дисков (событие Change ).

У объекта Dir1 основным свойством является Path – после выбора из списка папок (событие Change ) там сохраняется имя выбранной папки или список вложенных папок, разделенных слэшом (обратной косой чертой).

Объект File1 на форме представлен в виде текстового окна со списком файлов текущей папки. При выборе из этого списка нужного имени с помощью мыши (событие Click ) свойству FileName присваивается имя выбранного файла с указанием пути к текущей папки. Для того, чтобы связать список файлов с выбранной папкой, используется свойство Path.

В качестве примера ниже приведен текст трех процедур, которые запускаются при наступлении указанных событий. В результате работы программы выбранный текстовой файл открывается, считывается и текст выводится в текстовое окно.

 
 


Private Sub Drive1_Change() ' после выбора нужного диска из списка

Dir1.Path = Drive1.Drive ' его имя передается свойству Dir1.Path

ChDir Dir1.Path ‘ и выполняется команда “сменить директорию”

End Sub

 

Private Sub Dir1_Change() ' после выбора нужной папки из списка

File1.Path = Dir1.Path ' путь к этой папке передается свойству File1.Path

End Sub

 

Private Sub File1_Click() ' после выбора нужного файла

File_name = Dir1.Path + " \" + File1.FileName ‘ переменной File_name присваивается

' имя файла и добавляется путь к нему

Open File_name For Input As #1 ’ файл открывается для чтения

ST = " " ' в переменную ST построчно

Do Until EOF(1) ' считываются записи из файла

Input #1, S ' и добавляются управляющие коды

ST = ST + S + Chr(13) + Chr(10) ' < 13>, < 10>

Loop ‘ файл закрывается

Close #1 ' значение переменной ST выводится

Text2.Text = STT ‘ в окно Text2

End Sub

 

Примечание. Для того, чтобы в текстовое поле Text2 можно было вывести больше одной строки, свойству Multiline необходимо присвоить значение True.

Еще одну возможность выбора папки и файла из списка имеющихся на диске дает использование объекта CommonDialog. Этот объект отсутствует изначально на панели инструментов. Для того, чтобы его туда поместить, необходимо в основном меню выбрать пункт Project в развернувшемся меню выбрать опцию Components…, в появившемся окне (рис. 5.11) отметить пункт Microsoft Common Dialog Control.

 
 

 

 


Рис.5. Окно выбора компонентов

 

В результате в панель инструментов будет добавлена пиктограмма объекта CommonDialog. У этого объекта есть ряд методов, используя которые можно открывать диалоговые окна для выбора файла (метод ShowOpen ); для сохранении файла на диске (метод ShowSave ); для выбора цвета из палитры (метод ShowColor ); для выбора имени шрифта, его размер и стиля (метод ShowFont ).

Если поместить объект CommonDialog на форму, ему будет присвоено имя CommonDialog1. Для того чтобы в чтобы организовать режим выбора нужного файла из диалогового окна Open в соответствующей процедуре достаточно написать строку

CommonDialog1.ShowOpen

В режиме выполнения эта команда вызовет появление диалогового окна выбора файла. После выбора нужной папки и файла и нажатия кнопки «Открыть» имя выбранного файла передается свойству FileName объекта CommonDialog. После этого он может быть открыт, например для чтения, командой


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-03-17; Просмотров: 3145; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.032 с.)
Главная | Случайная страница | Обратная связь