События | Описание |
KeyUp,KeyDawn,KeyPress | |
DragDrop, DragOver | |
GotFocus,LostFocus | |
Change | Изменение в списке дисков |
Основным свойством является свойство Drive , которое используется для получения и установки текущего диска. Это свойство используется для синхронизации работы списка дисков и списка каталогов. Например,
Private Sub drvBox_ Change()
dirBox.Path = drvBox. Drive
Ch Drive drvBox. Drive ‘ Если нужно изменить текущий диск ОС
End Sub
Файлы последовательного доступа
Используются когда:
а) редко вносятся изменения
б) информация в файле обрабатывается от начала до конца
в) если нужно добавлять информацию в конец файла.
Для совершения операции чтения или записи с файлом его нужно открыть командой Open. После Open следует имя файла, строковая переменная или строка в двойных кавычках. Если файл не текущем каталоге, нужно указать путь к нему.
Запись информации в файл:
Open “имя файла” for Output as # 1
# 1 - это идентификатор файла - число от 1 до 255 с символом #. Максимальное число одновременно открытых файлов определяются параметром в Config.sys.
По команде Open резервируется файловый буфер в памяти компьютера. По мере заполнения буфера активируются соответствующий диск и весь блок информации посылается непрерывным потоком на диск (количество будет устанавливаться в Config.sys). После окончания работы с файлом он закрывается командой Close # идентификатор файла. Команда Close сбрасывает информацию на диск и очищает буфер. Для сброса содержимого буфера на диск (в критических ситуациях) используется команда Reset. Для ввода информации в файл можно использовать команду Print #
“ Запись в файл
Open “File 1” For Output As #1
Print #1, “1 2 3 4 5 ” или Print #1, txtDisplay.Text
Close #1
Если в текущем каталоге есть файл с таким именем, то этой командой он будет уничтожен.
Close без параметров закрывает все файлы.
Для определения размера открытого файла можно использовать команду LOF (идентификатор файла)
Open “File 1” For Output As #1
Print #1, “1 2 3 4 5 ”
Print LOF(1)
Вместо Print можно использовать Write # идентификатор файла, список переменных.
Чтение из файла
Open ”имя файла” For Input As # идентификатор файла
Задается свободный идентификатор, который в данный момент не используется в программе. Или так:
FileNumber % = FreeFile
Open “имя файла” For Input As # FileNumber %
После этого можно использовать оператор Line Input # для построчного чтения информации из файла:
Open “File1” For Input As #1
Line Input #1, A$ принимает в A$ всю информацию до Enter
Print A$
Close #1
Либо Input # идентификатор файла, список переменных, если запись с помощью Write, txtDisplay
Если файл сложной структуры, состоит из полей и записей, то файл будет читаться целыми записями командой LineInput, либо можно информацию читать из отдельных полей командой Input #
Например, чтение записей из файла Spisok в массив
1. Определяем тип пользователя
Type StudentRecord
Name As String
Adress As String
End Type
2. Объявляем массив записей типа Student как глобальную переменную
Global StudentAdress( ) As StudentRecord
Sub Proc( )
Dim FileNum As Integer, I As Integer
ReDim StudentAdress(1 to 150)
FileNum = FreeFile
Open “Spisok” For Input As # FileNum
For I=1 to 150
Input #FileNum, StudentAdress(I).Name
Input #FileNum, StudentAdress(I).Adress
Next I
Close FileNume
End Sub
Чтение текстового фала в текст, поле
. . . .
FileNum = FreeFile
Open “My.txt” For Input As FileNum
txtDisplay.Text=Input(LOF (FileNum), FileNum)
Close #FileNum
где LOF(FileNum) размер файла в байтах
Дозапись информации в существующий последовательный файл
При этом строки, которые будут выведены в файл присоединяются к строкам, которые уже содержаться в файле. Для этого служит оператор
Open “имя файла” For Append As # идентификатор файла
При этом:
- VB открывает файл, а если он не существует, то создает и создает соответствующий буфер;
- находит конец файла на диске;
- готовит к записи в конец файла.
Пусть существует текстовый файл My.txt и нужно дописать в его конец строку “До свидания”:
FileNum=FreeFile
Open “My.txt” For Append As FileNum
Print #FileNum, “До свидания”
Close #FileNum
При обработке больших файлов часто необходимо проверять на достижение конца файла. Для этого существует оператор EOF (идентификатор файла).
Фрагмент программы чтения информации из файла, созданного с помощью оператора Print #
. . . . .
B$ = “ ”
FileNum=FreeFile
Open “My.txt” For Input As #FileNum
Do Until EOF(FileNum)
Line Input #FileNum, A$
B$=B$+A$
Loop
txtDisplay.Text=B$
Close #FileNum
Файлы прямого доступа
Напоминают базу данных. Файл состоит из упорядоченных записей одинакового размера. Существует запись, состоящая из полей, в которых содержаться данные. Обеспечивает быстрый поиск информации, но дисковое пространство используется неэффективно.
При создании файла указывается максимальная длина существующей записи. Команда создания файла:
Open “MyLib.dat” For Random As # идентификатор файла
Len = длина записи, можно определять с помощью функции Len (имя переменной записи) в текущем каталоге.
Открытый файл прямого доступа может быть прочитан и записан практически одновременно.
Close # идентификатор файла - закрывает файл.
Каждая запись в файле имеет номер записи. Это позволяет работать с конкретной записью. При описании записи задаются пользовательским типом:
Type Books
Auther As String *30
Title As String *40
End Type
Запись, содержащую пятой записи файла в переменную:
Get #FileNum, 5, NewBook (если NewBook типа Books)
Запись из переменной в сороковую запись файла:
Print #FileNum, 40, NewBook
Созданные типы записей определяют размер файла прямого доступа. Размер файла определяется функцией FileLen (“имя файла”). Размер записи Len(NewBook) в байтах.