Управляют доступом других процессов ко всему файлу, открытому с помощью инструкции Open, или к его части.
Lock [#]номерФайла[, диапазонЗаписей] . . . Unlock [#]номерФайла[, диапазонЗаписей]
Параметры
номерФайла
Обязательный. Любой допустимый номер
файла.
диапазонЗаписей
Необязательный. Диапазон записей, которые
следует заблокировать или разблокировать.
номерЗаписи Номер записи (режим Random) или номер байта (режим Binary), с которого следует начать установку или снятие блокировки. начало Номер первой записи (или байта), которую следует заблокировать или разблокировать. конец Номер последней записи (или байта), которую следует заблокировать или разблокировать.
Замечания
Инструкции Lock и Unlock используются в средах, в
которых нескольким процессам может понадобиться доступ к одному и тому же
файлу.
Инструкции Lock и Unlock всегда используются парами.
Аргументы инструкций Lock и Unlock, образующих пару, должны
полностью совпадать.
Первой записи (или байту) файла соответствует номер 1,
второй 2 и т.п. Если указана только одна запись, то блокируется или
разблокируется только одна эта запись. Если диапазон записей указан, но опущен
аргумент начало, блокируются или разблокируются все записи от первой записи до
конца диапазона (конец). Вызов инструкции Lock без аргумента номерЗаписи
блокирует весь файл. Вызов инструкции Unlock без аргумента номерЗаписи
приводит к снятию блокировки со всего файла.
Если файл открыт для
последовательного ввода или вывода, инструкции Lock и Unlock
блокируют или разблокируют весь файл, независимо от наличия остальных
аргументов.
Перед закрытием файла или завершением работы с программой не
забудьте удалить все блокировки с помощью инструкции Unlock. Несоблюдение этого
правила может привести к непредсказуемым последствиям.
Пример
В данном примере с помощью инструкций Lock и Unlock
запрещается доступ других процессов к записи на время ее изменения. Предположим,
что файл TESTFILE содержит пять записей определенного пользователем типа
Record.
Type Record ' Тип, определенный пользователем. ID As Integer Name As String * 20 End Type Dim MyRecord As Record, RecordNumber ' Объявляет переменную. ' Открывает файл произвольного доступа. Open "TESTFILE" For Random Shared As #1 Len = Len(MyRecord) RecordNumber = 4 ' Определяет номер записи. Lock #1, RecordNumber ' Блокирует запись. Get #1, RecordNumber, MyRecord ' Читает запись. MyRecord.ID = 234 ' Изменяет запись. MyRecord.Name = "Иван Петров" Put #1, RecordNumber, MyRecord ' Записывает измененную запись. Unlock #1, RecordNumber ' Разблокирует текущую запись. Close #1 ' Закрывает файл.