IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

 
 Ответить  Открыть новую тему 
> Подключение внешних Dll. Help
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 56
Пол: Мужской

Репутация: -  0  +


Возможно ли в BP 7 использование Dll. Если можно, то как.


--------------------
Deleting...

All RESET
[Return]
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 201

Репутация: -  0  +


library name;
uses ....;
{описание процедур; типы даных, константы и т.д. писать для послед исп. в проге нельзя}
procedure name1;
begin
end;
...
procedure namen;
begin
end;
exports
name1 index1;
name3 index3; {пишешь названия процедур, которые будешь исп в прогах}
.....
namen index n;

begin
{раздел инициализации отсутствует}
end.

(при работе protect режим Dos и режим Windows}
Использовать можно только в копилерах Bp.EXE, BPC.exe, BPW.EXE.
Borland Pascal with objects, позваляет писать собств Dll
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


...
*****

Группа: Пользователи
Сообщений: 1 347
Пол: Мужской

Репутация: -  3  +


Имя библиотеки должно совпадать с сохраненным файлом!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Бывалый
***

Группа: Пользователи
Сообщений: 201

Репутация: -  0  +


Использовать процедуру в программе надо так:
procedure name(...);external 'Mylib';
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Можно воспользоваться и другим способом :

Var
 hLib:Integer;
 Proc:Function(Param1,Param2:Integer;Param3:Pointer):Boolean; {Например}
Begin
 hLib:=LoadLibrary('My.Dll');
 If hLib<>0 Then
 Begin
   @Proc:=GetProcAddress(hLib,'MyFun');
   If @Proc<>Nil Then
     Proc(1,2,Nil);  {Тоже например}
 End
End.
Этим методом я воспользовался, когда вызывал RegisterServiceProcess из Kernel32. Проблема в том, что в NT такой функции нет, а я не хотел, чтобы это было летально для всей программы.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 13.05.2024 6:10
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name