DLL и Дельфи
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: ценности реферат, скачать реферат
| Добавил(а) на сайт: Гагарин.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 | Следующая страница реферата
function FunctionName(Par1: Par1Type; Par2: Par2Type; ParN : ParNType): ReturnType; stdcall; external "MyDLL.dll" name "FunctionName" index FunctionIndex;
//если процедура
procedure ProcedureName(Par1: Par1Type; Par2: Par2Type; ...); stdcall; external "MyDLL.dll" name "ProcedureName" index ProcIndex;
Рассмотрим обьявление функции.
function FunctionName(Par1: Par1Type; Par2: Par2Type; ParN : ParNType): ReturnType; - Это собственно обьявление функции
external "MyDLL.dll" эта директива указывает на имя библиотеки, из которой будет вызвана функция (в нашем случае это MyDLL.dll)
name "FunctionName" необьязательная директива, которая указывает на имя функции в библиотеке; используется для повышения скорости доступа к функциям (имя определяется внутри библиотеки)
index FunctionIndex тоже необьязательная директива, использующаяся для ускорения доступа к функциям; указывает на индекс функции (индекс обьявляется в самой библиотеке).
Рассматривать обьявление процедуры не имеет смысла, т.к. процедурв вызывается точно так же (за исключением того, что у процедура ничего не возвращает). Вот и все! Теперь можно пользоваться обьявленой функцие в пределах модуля, в котором она была обьявлена.
Рассмотрим пример на основе нашей демонстрационной библиотеки, которую мы скомпилировали выше.
Создайте новый проект Project1 и на его форму поместите четыре поля Edit. Присвойте им такие имена: Num1Edit, Num2Edit, OpEdit, ResultEdit. Так же поместите одну кнопку, имя которой значения не имеет. В разделе implementation обьявите функцию:
implementation
function MyFunc(num1, num2, Errcode : Integer; Operation : PChar) : Integer; stdcall; external "Project2.dll" name "MathFunc" index 1;
А обработчик единственной кнопки приведите к примерно такому виду:
procedure TForm1.DoItButtonClick(Sender: TObject);
const
Errcode : Integer=978987;//код ошибки - может быть абсолютно любым.
var
Num1, Num2, Result_ : Integer;//для проверки чисел
Operation : String;//операция, для передачи параметра функции
begin
try //прежде чем передать числа
Num1 := StrToInt(Num1Edit.Text); //функции проверим их
Num2 := StrToInt(Num2Edit.Text);
except
Рекомендуем скачать другие рефераты по теме: контрольная по русскому языку, шпори для студентів.
Категории:
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 | Следующая страница реферата