Wiki source for KeyPgLock


Show raw source

{{fbdoc item="title" value="LOCK"}}----
Restricts read/write access to a file or portion of a file

{{fbdoc item="syntax"}}##
**Lock** #//filenum//, //record//
**Lock** #//filenum//, //start// To //end//
##
{{fbdoc item="param"}}
##//filenum//##
The file number used to ##[[KeyPgOpen|Open]]## the file.
##//record//##
The record (##[[KeyPgRandom|Random]]## files) to lock.
##//start//##
The first byte position (##[[KeyPgBinary|Binary]]## files) to lock from.
##//end//##
The last byte position (##[[KeyPgBinary|Binary]]## files) to lock to.

{{fbdoc item="desc"}}
##**Lock**## temporarily restricts access by other threads or programs to a file, or portion of a file, usually to allow safe writing to it.

After modifying the data, an ##[[KeyPgUnlock|Unlock]]## with the same parameters as the ##**Lock**## should be issued.

**Note: This command does not always work, neither as documented nor as expected. It appears to be broken at the moment.**

{{fbdoc item="ex"}}
{{fbdoc item="filename" value="examples/manual/fileio/lock.bas"}}%%(freebasic)
'' e.g. locking a file, reading 100 bytes, and unlocking it.
'' To run, make sure there exists a file called 'file.ext'
'' in the current directory that is at least 100 bytes.

dim array(1 to 100) as integer
dim f as integer, i as integer
f = freefile
open "file.ext" for binary as #f
lock #f, 1 to 100
for i = 1 to 100
get #f, i, array(i)
next
unlock #f, 1 to 100
close #f
%%

{{fbdoc item="diff"}}
- Currently, FB cannot implicitly lock the entire file
- In ##[[KeyPgRandom|Random]]## mode, FB cannot lock a range of records

{{fbdoc item="see"}}
- ##[[KeyPgOpen|Open]]##
- ##[[KeyPgUnlock|Unlock]]##
- ##[[KeyPgScreenlock|ScreenLock]]##

{{fbdoc item="back" value="CatPgFile|File I/O Functions"}}
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki



sf.net phatcode