Поделиться через


Операторы Lock, Unlock

Управляет доступом других процессов ко всему или части файла, открытого с помощью инструкции Open .

Синтаксис

Блокировка [ # ] filenumber, [ recordrange ] . .Разблокировка [ # ] filenumber, [ recordrange ]

Синтаксис операторов Lock и Unlock содержит следующие элементы:

Part Описание
filenumber Обязательно указывать. Любой допустимый номер файла.
recordrange Необязательный параметр. Записи, которые необходимо заблокировать или разблокировать.

Параметры

Параметры аргумента recordrange:

recnumber | [ start ] Доконца

Setting Описание
recnumber Номер записи (для файлов в режиме Random) или номер байта (для файлов в режиме Binary), с которого начинается блокирование или разблокирование.
start Номер первой записи или байта, которые необходимо заблокировать или разблокировать.
end Номер последней записи или байта, которые необходимо заблокировать или разблокировать.

Замечания

Операторы Lock и Unlock используются в средах, где нескольким процессам может быть необходим доступ к одному файлу.

Операторы Lock и Unlock всегда используются вместе. Аргументы для Lock и Unlock должны полностью совпадать.

Первая запись или байт в файле находятся на позиции 1, вторая запись или байт — на позиции 2 и т. д. Если указать только одну запись, только эта запись будет заблокирована или разблокирована. Если вы указываете диапазон записей и пропускаете начальную запись (start), все записи, начиная с первой и до конца диапазона (end), блокируются или разблокируются. Использование оператора Lock без recnumber приводит к блокированию всего файла; использование оператора Unlock без recnumber приводит к разблокированию всего файла.

Если файл был открыт для последовательного ввода или вывода, операторы Lock и Unlock применяются ко всему файлу, независимо от диапазона, указанного операторами start и end.

Важно!

Перед закрытием файла или выходом из программы удалите все блокировки с помощью оператора Unlock. Если не удалить все блокировки, результаты могут быть непредвиденными.

Пример

Этот пример показывает использование операторов Lock и Unlock. Во время внесения изменений в запись доступ других процессов к записи невозможен. В этом примере предполагается, что TESTFILE это файл, содержащий пять записей определяемого пользователем типа Record.

Type Record    ' Define user-defined type. 
    ID As Integer 
    Name As String * 20 
End Type 
 
Dim MyRecord As Record, RecordNumber    ' Declare variables. 
' Open sample file for random access. 
Open "TESTFILE" For Random Shared As #1 Len = Len(MyRecord) 
RecordNumber = 4    ' Define record number. 
Lock #1, RecordNumber    ' Lock record. 
Get #1, RecordNumber, MyRecord    ' Read record. 
MyRecord.ID = 234    ' Modify record. 
MyRecord.Name = "John Smith" 
Put #1, RecordNumber, MyRecord    ' Write modified record. 
Unlock #1, RecordNumber    ' Unlock current record. 
Close #1    ' Close file. 

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.