В настоящее время большая часть разработки систем осуществляется в сотрудничестве нескольких и более человек, что также способствует быстрому развитию системы.
Метод DLL является наиболее удобным. Я собрал некоторую информацию в этой области, надеясь помочь некоторым нуждающимся студентам (я помню, когда я только начинал учиться, просить совета было немыслимо). //(Копировать исходную книгу)
1. Как писать функциональные процедуры:
библиотекаFIRSTDLL;
использует
СисУтилс,
Классы;
{$R *.RES}
// 1. Определить конкретный процесс и режим выходного интерфейса функции
//--------------------------------
// функция 1
// Функция: функция 3-кратного усиления данных
//--------------------------------
функция BBnToSSnn(SourceResult:Integer):Integer;stdCall;
начинать
если SourceResult>0, то
Result:=SourceResult+3 //Результат сохраняется в Result
еще
Результат:=ИсходныйРезультат;
конец;
экспорт
BBnToSSnn; //2. Определение порта вывода функции.
конец.
==
==
2. Создайте форму в DLL.
======================
1. За один шаг создайте проект DLL и добавьте установленную форму.
библиотека МГРПЕРСН;
использует
СисУтилс,
Классы,
MGRPERFM в 'MGRPERFM.pas' {FormPERSON};//1.Код формы (тот же, что и обычная форма)
{$R *.RES}
экспорт
ShowPerSN;//2. Определение выходного порта функции.
начинать
конец.
2. Настройки Формы, установленные в DLL.
=========================================
блок МГРПЕРФМ;
интерфейс
использует
Windows, сообщения, SysUtils, классы, графика, элементы управления, формы, диалоги,
ComCtrls, ToolWin, ImgList;
тип
TFormPERSON = класс (TForm)
Частный
{Частные заявления}
общественный
{Публичные заявления}
конец;
//Переменные в этих местах больше не используются, меняем их на другое место следующим образом (изменяем одно)
//вар
// ФормаPERSON: TFormPERSON;
{Объявить выход из функции формы}//Изменить 2
функция ShowPerSN(AHandle: THandle; ACaption: String):BOOL StdCall;
выполнение
{$R *.DFM}
// определение процесса данных функции
функция ShowPerSN(AHandle: THandle; ACaption: String):BOOL;
вар
FormPERSON: TFormPERSON; //Определяем класс формы (здесь находится вышеописанное)
начинать
//Копируем дескриптор приложения в соответствующий программный объект DLL
application.Handle := AHandle;
FormPERSON := TFormPERSON.Create(Application);//Создаем элемент управления TForm
пытаться
ФормаPERSON.Caption := ACaption;
FormPERSON.ShowModal;//Показать эту форму
Результат := False; // возвращаем успешное значение
окончательно
ФормаЧЕЛОВЕК.Бесплатно;
конец;
конец;
3. Вызов функций и форм в DLL
=========================
1. Вызов первого метода
---------------
реализация // Ниже напишите DLL, которая вызывает функцию
{$R *.DFM}
//Вызов функции внутри DLL
функция BBnToSSnn(SourceResult:Integer):Integer;
StdCall внешний «FIRSTDLL.DLL»;
........
2. Вызов второго метода
==============
type //Создаем здесь класс функции
// 1 ----------------------------------
TShowPerSN = функция (AHandle: THandle; ACaption: String): BOOL; StdCall;
EDLLLoadError = class(Exception); // Одновременно создаем класс записи ошибки
// 1 ----------------------------------
TMAINCLTR = class(TForm) //Здесь никаких изменений, система автоматически генерирует его
...
процедура TMAINCLTR.ToolButton1Click(Отправитель: TObject);
var //Событие вызова кнопки: вызывающий процесс
LibHandle: THandle;
ШоуПерСН: ТшоуПерСН;
начинать
Application.Title:='Программа тестирования DLL-файла системы управления персоналом';
{Попытка загрузки DLL. Попытка загрузки файла DLL.}
LibHandle := LoadLibrary('MGRPERSN.DLL');
пытаться
если LibHandle = 0, то
поднять EDLLLoadError.Create('Невозможно успешно загрузить MGRPERSN.DLL');
@ShowPerSN := GetProcAddress(LibHandle, 'ShowPerSN');
если нет (@ShowPerSN = ноль), то
ShowPerSN(Application.Handle, 'Управление информацией о персонале')//Вызов формы
еще
ПоднятьLastWin32Error;
окончательно
FreeLibrary(LibHandle); // Выгружаем DLL.
конец;
конец;
============== КОНЕЦ ==================
Блог автора: http://blog.csdn.net/dgc/