ЛАБОРАТОРНАЯ РАБОТА № 4. Работа с файлами и каталогами. Запись данных в файл.


ТЕМА: «Работа с файлами и каталогами. Запись данных в файл»

Содержание отчета по лабораторной работе:

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. Как удалить файл?

Загрузка...