Реферат: MIDAS. Практическое применение

with DocList.LockList do

try

if IndexOf(Pointer(DocID)) < 0 then

begin

Add(Pointer(DocID));

Result := True;

end;

finally

DocList.UnlockList;

end;

end;

function UnregisterDoc(DocID: integer): boolean;

begin

Result := False;

if DocID = 0 then Exit;

with DocList.LockList do

try

if IndexOf(Pointer(DocID)) >= 0 then

begin

Remove(Pointer(DocID));

Result := True;

end;

finally

DocList.UnlockList;

end;

end;

В списке хранятся идентификаторы документов. Но TThreadList предназначен для хранения указателей. Поэтому для хранения в этом списке идентификатора, имеющего тип Integer, придется привести его к типу pointer. Конечно, если потребуется хранить дополнительную информацию о документе, например, его номер, придется организовать в списке ссылки на записи, с выделением памяти под эту запись и уничтожением ненужных записей. При этом внешний вид функций не изменится, просто усложнится работа со списком, и может понадобиться обращение к БД для получения дополнительной информации.

Теперь все просто: все модули данных, которые работают с документами, используют эти две функции, и если RegisterDoc возвращает false (а это произойдет только в том случае, если номер уже есть в списке), то пользователю выдается сообщение, что с документом уже работают. Функция UnregisterDoc просто удаляет номер из списка.

На клиенте понадобится, кроме доступа к двум провайдерам, еще пара функций – получение нового значения CLIENT_ID для справочника клиентов и получение полного имени клиента. Для этого необходимо создать описание этих функций в библиотеке типов.

К-во Просмотров: 826
Бесплатно скачать Реферат: MIDAS. Практическое применение