Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Высокоуровневые методы информатики и программир...docx
Скачиваний:
25
Добавлен:
12.11.2019
Размер:
6.53 Mб
Скачать

Вопросы для самопроверки и контроля

Вопросы для самопроверки

  1. Что содержит модуль данных и для чего он используется?

  2. Каково назначение компонента Table?

  3. Каково назначение компонента DataSource?

  4. Каково назначение компонента DBGrid?

  5. Каково назначение компонента DBNavigator?

  6. Каково назначение компонента DBText?

  7. Каково назначение компонента DBEdit?

  8. Каково назначение запросов?

  9. Что такое «подзапрос»?

  10. Каково назначение транзакции?

  11. Каковы дополнительные возможности клиент‑серверных СУБД?

Контрольные вопросы

  1. Должны ли быть динамические поля в таблице?

  2. Можно ли редактировать динамические поля?

  3. Постоянные (виртуальные или псевдополя) поля должны быть в таблице?

  4. Постоянные (виртуальные или псевдополя) поля можно редактировать?

  5. Каково назначение базового запроса?

  6. Допускается ли вложенность запросов?

  7. Каково назначение компонента QuickRep?

  8. Какая технология доступа к данным более универсальная: ADO (ActiveX Data Objects) или BDE (Borland Database Engine)?

Глава 4. Взаимодействие приложений

4.1. Создание динамически подключаемых библиотек (dll)

Библиотеки DLL являются хранилищем различных компонентов (обыч­но процедур, функций и ресурсов). Вызов компонентов из биб­лиотеки производится динамически при выполнении приложения по мере обращения к компонентам и не зависит от языка программирования. Это позволяет изменять компонент отдельно от приложения, не пере­трансли­руя его, и использовать его в приложениях, написанных на других языках программирования (C++, Visual Basic).

Приведем пример создания библиотеки из двух функций Sum и Mult.

Выполним команду File/New/Dll. Сформируется заготовка, которую далее отредактируем, после строки {$R *.RES} вставим строки:

function Mult(x,y:double):double; begin Result:=x*y; end; // произведение x*y

function Sum(x,y:double):double; begin Result:=x+y; end; // сумма x+y

exports Sum, Mult; //список имен экспортируемых функций Sum, Mult

Сохраним проект под именем BSP и откомпилируем его (^F9), сфор­ми­руется файл Bsp.Dll.

В нимание! Регистры букв в имени функции (в команде объ­яв­ле­ния функции в проекте) и в заголовке функции (в библиотеке) дол­жны соот­вет­­ст­во­вать.

В библиотеке можно хранить не только программы, но и ресурсы, например формы. Для примера создадим в проекте BSP форму (Form1) с надписью “Форма из BSP.DLL” и процедуру ShowFormDll (для создания и вывода формы Form1) вида:

procedure ShowFormDll(AOwner:TComponent); //заголовок процедуры

var F:TForm1; //переменная типа TForm1

begin F:=TForm1.Create(AOwner); //создание формы

F.ShowModal; {вывод формы} F.Free; {удаление формы} end;

Дополним строку exports:

exports Sum, Mult, ShowFormDll; //список имен экспортируемых функций

Откомпилируем проект (^F9) и получим новый вариант Bsp.DLL с дополненный формой и процедурой ее создания ShowFormDll.

Создайте новый проект для проверки Bsp.DLL (например, форма с двумя поля­ми вво­да чисел и кнопками (суммировать, перемножить, вывес­ти форму) для проверки подпрограмм Sum, Mult, ShowFormDll).

В новом проекте объявите процедуры:

function Mult(x,y:double):double; //объявление функции Mult

external 'bsp.dll' //имя библиотеки DLL с функцией Mult

function Sum(x,y:double):double; //объявление функции Sum

external 'bsp.dll' //имя библиотеки DLL с функцией Sum

procedure ShowFormDll (AOwner:TComponent); //объявление процедуры

external 'bsp.dll' //имя библиотеки DLL с процедурой ShowFormDll.

Вывод формы можно реализовать командой ShowFormDll(Self).