Вот пример поиска пользователей данной таблицы. Имейте в виду, что свойство TStringList Duplicate установлено в dupIgnore, поскольку пользователь может иметь более одной блокировки таблицы. При работе с dBase возвращается только блокировка текущего сеанса, тогда как с Paradox функция покажет всех пользователей, получивших доступ к этому же NET-файлу.
procedure GetTableUserList(ATable: TTable; AStringList: TStringList);
var hUserCur: hDBICur;
pUserBuf: pByte;
begin
AStringList.Clear;
AStringList.Duplicates := dupIgnore;
Check(DBIOpenLockList(ATable.Handle,True,True,hUserCur));
GetMem(pUserBuf,SizeOf(LOCKDesc));
try
while (DBIGetNextRecord(hUserCur,dbiNOLOCK,pUserBuf,nil) = DBIERR_NONE) do
AStringList.Add(StrPas(pLOCKDesc(pUserBuf)^.szUserName))
finally
FreeMem(pUserBuf,SizeOf(LOCKDesc));
DBICloseCursor(hUserCur);
end;
end; |
- Reinhard Kalinke [000874]