В_лр16

advertisement
Лабораторная работа №16 по дисциплине
"Высокоуровневые методы информатики и программирования"
ТЕМА: Создание и использование DLL.
---СОЗДАНИЕ И ИСПОЛЬЗОВАНИЕ ПАПОК
-----------------------------1. В Вашей папке создайте папку с именем В_лр16, совпадающим с именем файла
с этим заданием, и затем скопируйте файл с заданием в эту папку.
2. При выполнении задания создавайте в папке В_лр16 для каждого проекта
папку с именем, по смыслу соответствующим предназначению создаваемого
проекта, и сохраняйте все файлы, имеющие отношение к этому проекту,
в этой созданной папке (имена сохраняемых файлов должны отличаться от имен,
присваиваемых по умолчанию, и должны по смыслу соответствовать предназначению
создаваемого проекта).
DLL
--3. DLL (Dynamic Link Library) – динамически подключаемые библиотеки,
предоставляют универсальный механизм интегрирования в программу
процедур и функций, написанных, в общем случае, не только на языке Delphi,
но и на других языках программирования.
СОЗДАНИЕ DLL
-----------ПРОЕКТ DLL (ПРОЕКТ 16-1)
-----------------------4. Для перехода к созданию DLL в окне Turbo Delphi
в правом нижнем углу этого окна во внутреннем окне "Tool Palette"
на вкладке "Delphi Projects"
выберите строку "DLL Wizard"
или выполните команды "File => New => Other..."
(или нажмите на панели инструментов "Standard" кнопку "New items")
и затем в появившемся окне "New Items" в категории "Delphi Projects"
выберите значок "DLL Wizard",
после чего на экране должно появиться окно проекта создаваемой DLL.
5. Выполните действия, связанные с сохранением файлов созданного проекта
с именем, например, Pr16 в папке, например, с именем DLL_Projects
c использованием любой из соответствующих команд из меню команды "File"
в окне Delphi (при этом будет сохранен только один проект без каких-либо
модулей).
6. Добавьте в ПРОЕКТ DLL (или, иначе говоря, добавьте в библиотеку)
функцию с именем, например, vst, для чего непосредственно ниже строк
uses
SysUtils,
Classes;
вставьте следующее описание этой функции
function vst(s,t:string):string; StdCall;
begin
if StrToFloat(t)=0
then
vst:='Скорость: ВРЕМЯ НЕ ДОЛЖНО БЫТЬ РАВНО 0!'
else
vst:='Скорость: '+FloattoStr(StrToFloat(s)/StrToFloat(t));
end;
7. Вставьте строку
exports vst;
между описанием функции vst и строкой
{$R *.res}
8. Выполните компиляцию проекта (командами "Project => Compile Pr16"
или сочетанием клавиш Ctrl+F9), после чего в папке с файлами проекта должен
появиться файл Pr16.dll.
ИСПОЛЬЗОВАНИЕ DLL
----------------ПРОЕКТ 16-2
----------9. В качестве заготовки ПРОЕКТА 16-2 скопируйте в папку В_лр16
папку с файлами проекта ПРОГРАММЫ 2-1
(или пересохраните файлы этого проекта в отдельной папке внутри папки В_лр16,
или создайте этот проект заново в отдельной папке внутри папки В_лр16).
В дальнейшем этот проект будет упоминаться как ПРОЕКТ 16-2.
10. Скопируйте в папку с файлами ПРОЕКТА 16-2 файл Pr16.dll.
11. В модуле ПРОЕКТА 16-2 в конце раздела type (непосредственно выше строки
с var) добавьте заголовок описания функции vst следующего вида:
function vst(s,t:string):string; StdCall; external 'Pr16.dll';
12. В этом же модуле используйте функцию vst вместо условного оператора,
формирующего значение свойства Caption метки, отображающей значение скорости,
например:
Label3.Caption:=vst(Edit1.Text,Edit2.Text);
ПРОЕКТ DLL (дополнение)
-----------------------13. По аналогии с функцией vst добавьте в ПРОЕКТ DLL (или, иначе говоря,
добавьте в библиотеку) процедуру с именем, например, stv, заголовок описания
которой имеет вид
procedure stv(s,t:string;var v:string); StdCall;
и которая должна выполнять те же действия, что и функция vst,
но с присвоением результата параметру v.
14. Строка с ключевым словом exports должна быть изменена на
exports vst, stv;
15. Выполните компиляцию проекта (командами "Project => Compile Pr16"
или сочетанием клавиш Ctrl+F9).
ПРОЕКТ 16-3
----------16. На основе ПРОЕКТА 16-2 создайте ПРОЕКТ 16-3, в котором:
вместо заголовка описания функции vst должен быть использован
заголовок описания процедуры stv следующего вида
procedure stv(s,t: string; var v:string);StdCall; external 'Pr16.dll';
вместо оператора
Label3.Caption:=vst(Edit1.Text,Edit2.Text);
должен быть использован оператор вызова процедуры stv, в котором невозможно
непосредственное использование в качестве третьего параметра Label3.Caption
(в качестве этого параметра необходимо использование строки, описанной,
например, в процедуре обработки текущего события, и уже затем значение этой
строки может быть присвоено Label3.Caption).
ОТЧЕТ О ВЫПОЛНЕНИИ РАБОТЫ
------------------------17. Скопируйте в папки с файлами ПРОЕКТА 16-2 и ПРОЕКТА 16-3
измененный файл Pr16.dll.
18. Продемонстрируйте тексты модулей созданных проектов,
а также для ПРОЕКТА 16-2 и ПРОЕКТА 16-3 выполнение соответствующих программ
в среде программирования и независимо от нее.
_____________________________________________________________________________
Download