...действительно, когда вы запрашиваете о блокировке файла и прерывания DOS,
это относится к блокировке записи. Если вы хотите иметь полностью монопольный
доступ к файлу, то в этом случае вы должны воспользоваться переменной FileMode.
Вот пример кода моей программы, где я использую эту переменную:
type
FileShareType = (DenyCompatibility, DenyAll, DenyWrite, DenyRead, DenyNone);
FileAccessType = (ReadOnly, WriteOnly, ReadWrite);
procedure SetFileAccess(AccessMode: FileAccessType; ShareMode: FileShareType);
{ Устанавливаем режим доступа к файлу для следующего вызова открытия файла }begin
FileMode := ord(AccessMode) or (ord(ShareMode) shl 4)
end;
Перевод на русский язык:
Это фрагмент кода на Паскале, демонстрирующий, как установить режим доступа к файлу и режим деления с помощью переменной FileMode. Код определяет два перечисления: FileShareType и FileAccessType, которые представляют собой различные типы деления и режимы доступа к файлам соответственно.
Процедура SetFileAccess принимает два параметра: AccessMode (типа FileAccessType) и ShareMode (типа FileShareType). Эта процедура устанавливает режим файла, комбинируя режим доступа и режим деления с помощью операций побитового сложения.
Вот что происходит в коде:
Функция ord используется для преобразования значения перечисления AccessMode в целое число.
Оператор shl (сдвиг влево) используется для сдвига бит значения перечисления ShareMode на 4 позиции, эффективно умножая его на 16. Это делается потому, что режим файла требует 4-битового поля для режимов деления.
Два значения комбинируются с помощью оператора побитового сложения (or). Это создает целое значение, представляющее собой режим доступа к файлу и режим деления.
Полученное значение FileMode можно использовать при открытии файла для указания желаемого режима доступа и режима деления.
Например, если вы хотите открыть файл только для чтения (без записи) и запретить все режимы деления, вы бы вызвали процедуру следующим образом:
SetFileAccess(ReadOnly, DenyAll);
Это установит значение FileMode в комбинацию режима только для чтения доступа к файлу и режима запрета всех режимов деления.
В целом, этот код предоставляет гибкий способ управления режимами доступа и деления файлов в программах на Паскале.
Блокировка записи в файле достигается не только запросом на прерывание DOS, но и использованием переменной FileMode для полного монопольного доступа к файлу.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS