[View Borland Home Page][View Product List][Search This Web Site][View Available Downloads][Join Borland Online][Enter Discussion Area][Send Email To Webmaster]

BDE API Examples (DbiAcqPersistTableLock)

Acquires an exclusive persistent lock on the table preventing other users from using the table or creating a table of the same name.

Place a lock on a non-existent table:

This example is included with Delphi in the BDE32.HLP file.

Create a directory "read only" lock file for accessing Paradox tables on CD-ROMs and "read only" network directories.

This example uses the following input:
CreateReadOnlyLockFile(Database1)
NOTE: Once the .lck files are created, you can move them to any directory to create a read only directory. Also, if this lock is used on a local machine, LOCAL SHARE will need to be set to TRUE.
procedure CreateReadOnlyLockFile(Database: TDatabase);
var
  DBType, Dir: string;
  Len: word;

begin
  SetLength(DBType, DBIMAXNAMELEN + 1);
  // Make sure that the database is of STANDARD type...
  Check(DbiGetProp(hDBIObj(Database.Handle), dbDATABASETYPE, Pchar(DBType),
           DBIMAXNAMELEN, Len));
  SetLength(DBType, Len - 1);
  if DBType <> 'STANDARD' then
    raise EDatabaseError.Create('Directory locks can only be created on STANDARD aliases');
  SetLength(Dir, DBIMAXPATHLEN + 1);
  // Get the directory that the TDatabase is pointing to...
  Check(DbiGetDirectory(Database.Handle, False, PChar(Dir)));
  SetLength(Dir, StrLen(PChar(Dir)));
  // Lock the directory...
  Check(DbiAcqPersistTableLock(Database.Handle, 'paradox.dro', szPARADOX));
end;

Back to BDE API Reference Page


DISCLAIMER: You have the right to use this technical information subject to the terms of the No-Nonsense License Statement that you received with the Borland product to which this information pertains.
Trademarks & Copyright © 1998 Borland International, Inc.