{
// преобразование буфера
OemToChar(buf,buf);
}
4. В заголовочном файле <unit_s>.h ввести описание экспортируемой функции. Пример приведен ниже.
//---------------------------------------------------------------------------
#ifndef MainLab2sH
#define MainLab2sH
//---------------------------------------------------------------------------
extern "C" __declspec(dllexport) void ConvertTxt(char *buf);
#endif
5. В опциях проекта Project|Options… в окне Advanced Compiler опцию Calling Convention установить в состояние Standart Call.
6. Выполнить компиляцию проекта. В результате компиляции будут сгенерированы два файла - <user_s>.dll(DLL-модуль) и <user_s>.lib (файл, который содержит список функций данной DLL).
7. Вызвать свой проект из задания первой лабораторной работы.
8. В процедуре реакции на событие нажатия кнопки "Преобразовать в ANSI" вместо функции API преобразования буфера в ANSI-формат установить вызов функции из DLL-модуля. Пример процедуры приведен ниже.
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
// преобразование в ANSI
{
char *txt;
txt = new char [RichEdit1->Lines->Text.Length()];
// чтение в буфер
strcpy(txt,RichEdit1->Lines->Text.c_str());
// преобразование буфера
// вызов DLL статически
ConvertTxt(txt);
// запись в MEMO
RichEdit1->Lines->Text=(AnsiString)txt;
delete txt;
}
//---------------------------------------------------------------------------
9. В заголовочном файле <unit>.hpp ввести описание импортируемой функции. Пример приведен ниже.
//---------------------------------------------------------------------------
// функции DLL
extern "C" __declspec(dllimport) void ConvertTxt(char *buf);
10. Включить в проект приложения LIB-файл DLL-модуля. Для этого с помощью команды Project|Add to Project… вызвать окно Add to Project. В качестве типа файла задать Library file (*.lib). Выбрать файл <user_s>.lib и нажать кнопку "Открыть".
11. Выполнить компиляцию. Устранить ошибки и проверить правильность выполнения функции.
12. Для отладки DLL-модуля необходимо выполнить следующие действия:
· вызвать проект DLL-модуля;
· установить параметры в окне Run Parameters. В поле Host applicationиспользуя кнопку Browseустановить имя ЕХЕ-файла, из которого вызывается функция DLL. В поле Run Parametersпрописать имя вызываемой функции DLL (ConvertTxt);
· установить точку останова в функции ConvertTxt();
· выполнить запуск Run. В начале запускается ЕХЕ-файл, при нажатии на кнопку "Преобразовать в ANSI" управление передается функции DLL и отладчик останавливается в указанной точке останова;
· для отладки DLL-модуля используются те же правила и методы, что и при отладке обычного ЕХЕ-модуля.
13. Открыть новый проект для разработки DLL, используя команду File|New…. В окне Newвыбрать приложение с иконкой DLL. Сохранить новый проект в папке D:/VMSS/U41(U42)/<user_d>, используя команду File|Project As. Имена папки, проекта <user_d> и файла присваиваются самостоятельно.
14. Открыть новый модуль, используя команду File|New Unit. Сохранить новый модуль в папке D:/VMSS/U41(U42)/<unit_d>, используя команду File|Save As…. Имя файла модуля <unit_d> присваивается самостоятельно.
15. В файле <unit_d> ввести функцию поиска ключевого слова и преобразования текста в RTF-формат. Ключевое слово и сам текст передаются через файл 123.rtf. За основу рекомендуется взять отлаженную функцию из первой лабораторной работы. Пример функции приведен ниже.
//---------------------------------------------------------------------------
extern "C" __declspec(dllexport) int SearchConRTF(void)
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.