Рефераты | Рефераты по информатике, программированию | MIDAS. Практическое применение | страница реферата 13 | Большая Энциклопедия Рефератов от А до Я
Большая Энциклопедия Рефератов от А до Я
  • Рефераты, курсовые, шпаргалки, сочинения, изложения
  • Дипломы, диссертации, решебники, рассказы, тезисы
  • Конспекты, отчеты, доклады, контрольные работы

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

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

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

    В зависимости от того, какой синтаксис используется в редакторе библиотеки типов (IDL или Pascal), объявление этих функций выглядит по-разному, ниже приведены их описания в protected-секции модуля данных:

    protected

     class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string);

      override;

     function NewClientID: Integer; safecall;

     function Get_ClientName(ClientID: Integer): WideString; safecall;

    На IDL это выглядит так:

    [id(0x00000001)]

    HRESULT _stdcall NewClientID([out, retval] long * Result);

    [propget, id(0x00000004)]

    HRESULT _stdcall ClientName([in] long ClientID, [out, retval] BSTR * Value);

    Реализация этих функций довольно проста. Надо вызвать хранимые процедуры, и выдать возвращаемое ими значение в качестве результата:

    function TrdmCommon.NewClientID: Integer;

    begin

     lock;

     with spNewID do

     try

      ExecProc;

      Result := paramByName('ID').AsInteger;


    Рекомендуем скачать другие рефераты по теме: зимнее сочинение, шпаргалки по уголовному.



    Предыдущая страница реферата | 8  9  10  11  12  13  14  15  16  17  18 |




    Поделитесь этой записью или добавьте в закладки

       




    Категории:



    Разделы сайта




    •