
- •Тема 3. Использование языка visual basic for applications для реализации математических моделей и численных методов (6 часов)
- •1.3 Переменные, массивы, условные конструкции, условные переходы
- •2.3 Процедура
- •Input #НомерФайла, СписокПеременных
- •Line Input #НомерФайла, ИмяПеременной
- •Input(Число, [#]НомерФайла)
- •Eof(НомерФайла)
- •Seek #НомерФайла, Позиция
- •3.5 Работа с двоичными файлами
- •3.6 Наиболее употребляемые инструкции и функции при работе с файлами
3.5 Работа с двоичными файлами
В файле такого типа можно выделить байты и блоки байтов. Двоичные файлы открываются сразу для чтения и записи.
Открытие двоичного файла
Синтаксис:
Open Путь For Binary As [#]НомерФайла
Запись данных в двоичные файлы
Синтаксис:
Put [#]НомерФайла, [НомерЗаписи], ИмяПеременной
-
НомерФайла — номер файла
-
НомерЗаписи — размер записи в байтах
- ИмяПеременной — имя переменной, содержащей данные, которые следует записать в файл
Записывает содержимое переменной в двоичный файл.
Позиционирование осуществляется также, как и в файлах последовательного доступа.
Чтение данных в двоичных файлах
Синтаксис:
Get [#]Номерфайла, [НомерЗаписи], ИмяПеременной
-
Номерфайла — номер файла.
-
НомерЗаписи — размер записи в байтах
-
ИмяПеременной — имя переменной, в которую следует поместить считанные данные
Читает данные из открытого двоичного файла в переменную.
3.6 Наиболее употребляемые инструкции и функции при работе с файлами
Приведем наиболее часто употребляемые инструкции и функции для работы с файлами.
LOF |
Функция возвращает значение типа Long, представляющее размер файла в байтах, открытого с помощью инструкции Open. Для определения размера закрытого файла следует использовать функцию FileLen. Синтаксис: LOF(Номерфайла) |
FileLen |
Возвращает значение типа Long, содержащее размер файла в байтах. Синтаксис: FileLen(Путь) |
ChDir |
Изменяет текущую папку. Синтаксис: ChDir путь |
ChDrive
|
Изменяет текущий диск. Синтаксис: ChDrive диск Например,ChDrive "D" |
CurDir |
Функция возвращает текущую папку |
FileAttr |
Возвращает значение типа Long, представляющее режим файла, открытого с помощью инструкции Open. Возвращаемые значения: 1 (для режима Input), 2 (Output), 4 (Random), 8(Append) и 32 (Binary). Синтаксис: FileAttr(НомерФайла, Тип)
|
GetAttr |
Возвращает значение типа Integer, определяющее атрибуты файла, каталога или папки. Значение, возвращаемое функцией GetAttr, является суммой констант, приведенных в табл. Синтаксис: GetAttr(путь) |
.SetAttr |
Устанавливает атрибуты файла. Синтаксис: SetAttr pathname, attributes Атрибуты в аргументе attributes определяются как сумма констант из табл. |
FileCopy |
Копирует файл. Синтаксис: FileCopy source, destination Аргументы:
|
FileDateTime |
Функция возвращает дату и время последнего изменения файла. Синтаксис: FileDateTime(путь) |
Kill |
Удаляет существующий файл. Синтаксис: Kill путь В аргументе путь допустимо использование символов (*) и (?) для удаления нескольких файлов по маске. |
MkDir |
Создает новую папку. Синтаксис: MkDir путь |
RmDir |
Удаляет существующую папку. Синтаксис: RmDir путь |
Табл. Константы атрибутов файла
Константа |
Значение |
Описание |
vbNormal |
0 |
Обычный |
vbReadOnly |
1 |
Только чтение |
vbHidden |
2 |
Скрытый |
vbSystem |
4 |
Системный |
vbDirectory |
16 |
Каталог или папка |
vbArchive |
32 |
Файл был изменен после последнего резервирования |
ОБЪЕКТ FILESEARCH
Объект FileSearch обладает функциональными возможностями диалогового окна Открытие документа (Open), отображаемого на экране_посредством выбора команды Файл, Открыть (File, Open). Объект FileSearch входит в объект Application и иерархически включает в себя (рис.):
-
Семейство FoundFiles, которое является списком всех файлов, возвращаемых в результате поиска
-
Семейство PropertyTests, которое является списком всех критериев поиска
Рис. Иерархическая структура объекта FileSearch
Объект FileSearch возвращается свойством FileSearch объекта Application. Объект FileSearch имеет следующие два метода.
Execute |
Поиск специфицированных файлов. Синтаксис: Execute(SortBy, SortOrder, AlwaysAccurate) Аргументы:
Допустимые значения: msoSortOrderAscending и msoSortOrderDescending - AlwaysAccurate — допустимые значения: True (поиск среди измененных файлов) и False (в противном случае) |
NewSearch |
Устанавливает критерии, используемые при поиске по умолчанию |
Приведем наиболее часто применяемые свойства объекта FileSearch.
FileName |
Устанавливает имя файла для поиска. Допустимо использование символов (*) и (?) |
FileType |
Задает тип файла для поиска. Допустимые значения: MsoFileTypeAllFiles, msoFileTypeBinders, msoFile-TypeDatabases, msoFileTypeExcelWorkbooks, msoFi-leTypeOffice Files, ms о FileTypePowerPoint Presentations, msoFileTypeTemplates и msoFileTypeWordDocuments |
Lookin |
Задает папку для поиска файла |
SearchSubFolders |
Допустимые значения: True (поиск также проводить в поддиректориях) и False (в противном случае) |
Следующий пример позволяет в поле со списком диалогового окна вывести Список всех файлов текущей папки:
Prrivate Sub UserForm_Initialize() ComboBoxl.Clear
With Application.FileSearch
.FileName = "*.xls"
.SearchSubFolders = False
If .Execute(SortBy:=msoSortByFileName, _
sortorder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
ComboBoxl.AddItem .FoundFiles(i)
Next i
End If
End With
End Sub
Предыдущая программа отображает в поле со списком полные имена файлов, т. е. имя файла и путь. Для того чтобы в списке отображались только имена файлов (без пути), программу необходимо модифицировать следующим образом:
Private Sub UserForm Initialize()
Dim ИмяПапки As String
Dim ИмяФайла As String
Dim ДлинаПути As Integer
ComboBoxl.Clear
ИмяПапки = CurDir
ДлинаПути = Len(ИмяПапки)
With Application.FileSearch
.FileName = "*.xls"
.SearchSubFolders = False
If .Execute(SortBy:=msoSortByFileName,
sortorder:=msoSortOrderAscending) > 0 Then
For i = 1 To .FoundFiles.Count
ИмяФайла = Right(.FoundFiles(i), Len(.FoundFiles(i)) - ДлинаПути - 1)
ComboBoxl. Addltem ИмяФайла Next i
End If
End With
End Sub