ТЕМА: «Работа с файлами и каталогами. Запись данных в файл»
Содержание отчета по лабораторной работе:
1. Тема лабораторной работы.
2. Описание функций работы с файлами.
3. Программный код с комментариями, программ, выполняемых в ходе лабораторной работы
Первая программа: «Файл»
Данная программа будет добавлять в файл с именем Data.dat имя и фамилию пользователя, которые он напишет в текстовых полях.
Визуальное проектирование
- Разместите на форме такие элементы:
Наклейка (Label1) — с параметром Caption — Имя
Наклейка (Label2) — с параметром Caption — Фамилия
Текстовое окно (Text1) — в окне свойства Text удалите всё
Текстовое окно (Text2) — в окне свойства Text удалите всё
Кнопка (Button1) — с Caption — Записать
Кнопка (Button2) — с Caption — Выйти
В результате у вас должно получиться так:
Программирование в коде
Vb может открывать файлы для нескольких действий:
û запись данных в файл по срокам (с удалением всего что было до этого) — оператор Output,
û загрузка данных из файла по строкам — оператор Input,
û добавление данных в файл по строкам (без удаление всего что было до этого)-оператор Append..
Если вы запустите программу из VB, то Data.dat будет записываться в рабочий каталог VB, если же вы запустите уже откомпилированную программу, то есть файл с расширением exe, то файл Data.dat будет записываться в тот каталог где находится этот exe’шный файл. Если файла Data.dat не будет, то будет создан новый файл с этим именем.
- Войдите в раздел глобальных объявлений и напишите
Option Explicit ‘Объявляем переменные
Dim fn As String ‘Объявляем текстовую переменную fn — Имя
Dim ln As String ‘Объявляем текстовую переменную ln — Фамилия
- Войдите в программный код кнопки Записать и напишите там
fn = Text1.Text ‘Придаем переменной fn значение Text элемента Text1
ln = Text2.Text ‘Переменная ln равна значению Text элемента Text2
Open «data.dat» For Append As #1 ‘Открываем файл data.dat , под номером 1, для добавления в него данных
Print #1, fn ;» «; ln ‘Записать в файл номер 1 переменную fn,пробел и переменную ln
Close #1 ‘ Закрываем файл номер 1
- Войдите в код кнопки Выход и напишите там
End ‘Выход
В результате у вас должно получиться
Option Explicit
Dim fn As String
Dim ln As String
Private Sub Command1_Click()
fn = Text1.Text
ln = Text2.Text
Open «data.dat» For Append As #1
Print #1, fn;» «;ln
Close #1
End Sub
Private Sub Command2_Click()
End
End Sub
- Перед проверкой программы, откомпилируйте ее.
· Запустите exe’шный файл и введя свое имя и фамилию нажмите Записать.
- Введите ещё чьи-нибудь имя и фамилию и опять запишите их.
- Выйдите из программы и зайдите в тот каталог, откуда вы запускали ее.
- Найдите там файл Data.dat и просмотрите его любым текстовым редактором, в нем должны быть те данные которые вы вписали.
Вторая программа «Считывание данных из файла»
Программа считывает все данные из файла autoexec.bat, который расположен в корневом каталоге C: и выводит их в текстовое окно.
Визуальное проектирование
- На форме должны быть такие объекты:
Текстовое окно (TextBox): Name-Text1, Multiline-True
Кнопка (Button) : Name-Button1, Caption-«Загрузить»
Кнопка (Button) : Name-Button2, Caption-«Выход»
В результате должно получиться примерно так:
Программирование в коде
- Войдите в раздел глобальных объявлений и напишите там:
Option Explicit
Dim st as String — объявляем текстовую переменную st, для обозначения очередной строки.
Dim AllText as String — объявляем текстовую переменную AllText, эта переменная нужна нам для обозначения всего текста, то есть всех данных записанных из файла.
- Зайдите в код кнопки Считать. Напишите там:
Open «C:autoexec.bat» for Input as #1
— этой строкой открываем файл autoexec.bat, под номером 1, для чтения из него данных по строкам.
Do While Not EOF (1)
— для понимания смысла этого выражения можно перевести его дословно: делать пока нет конца файл (Eon of File) номер 1
Input #1, st
— Считываем из файла номер один очередную строку (в начале цикла это будет первая, потом вторая и так пока не кончится файл)
AllText = AllText + st + chr(13)+chr(10)
// весь текст равен весь текст плюс очередная строка (в начале цикла весь текст — пустой, то есть в этой переменной ничего не записано, дальше весь текст — это первая строка, потом первая и вторая строка и т.д. пока не кончится файл) и плюс клавиша Enter (Это Chr(10) +chr(13)). Клавиша Enter тут нужна для перехода на другую строчку, если ее не нажать, то переменная AllText будет сплошным слиянием строк, то есть все строки будут записанны в одну большую строку. К тому моменту, когда он кончится, переменная AllText будет равна всему тексту файла.
Loop
— заканчиваем цикл, то есть, если еще нет конца файла, то программа идет к началу цикла, а если конец файла достигнут, то программа идет на свою следующую строчку.
Close #1
— закрываем файл номер 1
Text1.Text = AllText
— Придаем параметру Text элемента Text1 значение переменной AllText.
- Проверьте программу.
- Попробуйте открыть другие файлы, например файл data.dat.
Программа «Серийный номер»
Программа при входе в программу Hello World проверяет, зарегистрировался ли пользователь, и если нет, то просит его об этом, а если да, то выводит его на программу Hello World. В файле r.txt будет записано — зарегистрирована ли программа.
Нам нужно чтобы у каждой программы был свой серийный номер, то есть на каждом компьютере он был разным, но при каждом запуске программы на одном компьютере — одинаковым. Опять же самое простое решение — генерировать код и записывать его в файл. При этом нужно не перезаписывать старый номер, а записывать его только тогда, когда старого нет — то есть при первом запуске программы на компьютере.
— Визуальное проектирование
- У вас в проекте должно быть 2 формы: одна — программа Hello World, а вторая — регистрация.
- Сначала сделаем программу Hello World , имя формы — prog
- Далее делаем форму с именем frmSn. На ней должны быть такие элементы:
Этикетка (Label) : Caption — Серийный номер
Этикетка (Label) : Caption — Регистрационный код
Текстовое поле (TextBox): Свойство Text должно быть пустым, имя — txtSn
Текстовое поле (TextBox): Свойство Text должно быть пустым, имя — txtRc
Кнопка (CommandButton): Имя — Command1, Caption — Регистрировать
Кнопка (CommandButton): Имя — Command2, Caption — О регистрации
Кнопка (CommandButton): Имя — Command2, Caption — Выход
В результате у вас должно получится примерно так:
— Программирование в коде
В разделе глобальных объявлений записать:
Option Explicit
Dim sn as Long — sn — это серийный номер
Dim rc as Long — rc — это регистрационный код
Dim result as Long
Dim result2 as Single
Dim reg As String — Это регистрация — если зарегистрировано, то она равна 1, если нет — то 0
При начале работы программа первым делом должна проверить — зарегистрирована ли она. Пишем в разделе Form_Load( )
If Dir(«d: .txt») = «» Then — Проверяем — есть ли файл r.txt на диске D и если нет тогда…
reg = 0 — Придаем регистрации значение — 0 (не зарегистрировано)
Open «d: .txt» For Output As #2 -Открываем этот файл для записи
Print #2, reg -Записываем в него переменную reg
Close #2 -Закрываем его
Else -Если на диске D есть файл r.txt
Open «d: .txt» For Input As #2 -Открываем его для вытаскивания из него данных
Input #2, reg -Вытаскиваем из него переменную reg
Close #2 -Закрываем его
If reg = «1» Then -Если зарегистрировано то
prog.Show -Показываем форму prog
frmsn.Hide — Скрываем эту форму
End If — Заканчиваем проверку регистрации
End If — Заканчиваем проверку наличия файла
Самостоятельно:
Для кнопки Регистрировать запишите код, который будет записывать данные введенные в текстовое поле Регистрационный номер.
Для кнопки О Регистрации создайте третью форму, в которой будет информация о регистрации.
Для кнопки Выход используйте функцию End.
Операторы работы с файлами:
FileDateTime (имя файла) — Возвращает дату и время создания илипоследнего изменения файла.
Пример1: В форму вставьте элемент список файлов (FileListBox) с именем File1.
При запуске программы выберите интересующий файл.
Sub File1_Click ()
Dim Msg, TimeStamp.
FName = File1.FileName ‘ Присваиваем переменной имя выбранного файла
TimeStamp = FileDateTime(FName)
Msg = UCase(FName) & «был создан или изменен »
Msg = Msg & Format(TimeStamp, «dddddd») & » в »
Msg = Msg & Format(TimeStamp, «h:mm AM/PM») & «. Его размер »
Msg = Msg & FileLen(FName) & » байт» ‘ Функция возвращает размер файла.
MsgBox Msg ‘ Выводится сообщение.
End Sub
Kill (имя файла или каталога) – удаляет файл или каталог.
Name старое имя As новое имя — Изменяет имя файла или папки.
MkDir путь – создает папку.
RmDir путь – удаляет папку.
Пример2: Файл из текущего каталога будет перемещен и переименован в другой каталог. При загрузке кликните на форме.
Sub Form_Click ()
Dim FName1, FName2, Msg, NL, TestDir
NL = Chr(10) .
FName1 = «NX.DAT» .
FName2 = «NY.DAT»
TestDir = «d:TEST.DIR»
Open FName1 For Output As #1 Создаем тестовый файл
Print #1, «test data» ‘ Выводим сообщение в файл.
Close #1
MkDir TestDir ‘ Создаем каталог с именем TEST
Name FName1 As TestDir & «» & FName2 ‘ Перемещаем и переименовываем.
Msg = «Новый файл, » & FName1 & » создан »
Msg = Msg & «в » & CurDir$ & «. Созданный файл был »
Msg = Msg & «перемещен » & TestDir & » и переименован »
Msg = Msg & FName2 & «.» & NL & NL
Msg = Msg & «Выберите OK для удаления файла и »
Msg = Msg & «каталога.»
MsgBox Msg
Kill TestDir & «» & FName2 ‘ Удаление файла с диска.
RmDir TestDir ‘ Удаление каталога с диска .
End Sub
Задания для самостоятельной работы:
1. Усовершенствовать рассмотренный выше пример1, чтобы имя файла вводилось с клавиатуры и сведения о времени создания и изменения выводились бы в текстовое окно.
2. Усовершенствовать рассмотренный выше пример2, чтобы имена файлов и каталога вводились с клавиатуры.
3. Усовершенствовать рассмотренный выше пример2, чтобы в форме были кнопки Выход и Удаление. Переименованный файл и каталог удалялись бы по нажатию на кнопку Удаление.
Контрольные вопросы:
1. Типы доступа к файлам?
2. Как записать данные в файл?
3. Как считать из файла?
4. Как вывести содержимое файла в текстовое поле?
5. Путь, по которому запишет файл VB?
6. Функции Input#, Print#, Write#?
7. Закрытие файла?
8. Как переименовать файл?
9. Как создать каталог?
10. Как удалить каталог?
11. Как получить сведения о дате и времени создания или изменения файла?
12. Как удалить файл?