Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Пакеты


ORMADA ©   (2004-07-05 15:20:00) 

Всем доб. день! Вот начал юзать пакеты динамически и столкнулся с проблемой как вызвать ф-ию из динамически загружаемого пакета.
в длл было просто- был раздел экспорта в кот всё и указывалось а здесь как ?


Sandman25   (2004-07-07 12:43:00) [1]

[11] Amoeba ©   (07.07.04 12:39)

Вот и я о том же. Зачем что-то еще добавлять, если добавляемое только ухудшает ситуацию? Замедление само по себе есть вред, и для его оправдания нужны причины (облегчение использования, понимания, совместимость и т.д.). Без ИМХО.


Sandman25   (2004-07-07 12:41:00) [2]

[10] Игорь Шевченко ©   (07.07.04 12:36)

ИМХО данная цитата была бы уместна, если бы выигрыш появлялся при добавлении"редкопонимаемого" модификатора. Почему бы safecall не написать, раз пошла такая пьянка :)


Amoeba   (2004-07-07 12:39:00) [3]


> Sandman25 ©   (07.07.04 12:17) [9]

Естественно, при использовании стандартного соглашения о вызовах быстродействие будет выше.
Кроме того, пакеты все равно не могут использоваться программами, например написанными языках, где нет регистрового вызова. Так что вапорос о совместимости не стоит.


Игорь Шевченко   (2004-07-07 12:36:00) [4]

Sandman25 ©   (07.07.04 12:17)


> Так вроде бы при стандартном register используются регистры
> и за счет этого будет выигрыш в быстродействии?


"настоящие   программисты  используют самомодифицирующий  код,  особенно  в тех случаях, когда это экономит 20 наносекунд
в середине очень короткого цикла"

(с)


Sandman25   (2004-07-07 12:17:00) [5]

[8] Игорь Шевченко ©   (07.07.04 12:13)

Так вроде бы при стандартном register используются регистры и за счет этого будет выигрыш в быстродействии?


Игорь Шевченко   (2004-07-07 12:13:00) [6]

Amoeba ©   (07.07.04 11:54)


> А нафига нужен stdcall в пакетах (BPL)?


Но и вреда, однако, тоже никакого (с)


Amoeba   (2004-07-07 11:54:00) [7]

А нафига нужен stdcallв пакетах (BPL)?


Mim1   (2004-07-06 18:56:00) [8]

Так вы экспортируете неправильно

> function ShowForm(hOwner: hInst): Boolean; stdcall ; export;

Export ничего не дает.
The directives near, far, and export refer to calling conventions in 16-bit Windows programming. They have no effect in 32-bit applications and are maintained for backward compatibility only.

Нужно так

function ShowForm(hOwner: hInst): Boolean; stdcall;
Exports ShowForm;


ORMADA   (2004-07-06 09:36:00) [9]

такая фигня в пакете не канает

function ShowForm(hOwner: hInst): Boolean; stdcall; export;

при вызове @ShowForm := getProcAddress(HandlePack, 'ShowForm');


просто не видет адреса


ORMADA   (2004-07-06 08:20:00) [10]

2 Mim1 мне низя линоковать автоматом т.к. пакеты будут подгружаться динамически и разные юзеры используют и вызывают разные пакеты
в длл был раздел экспорта в пакетах его нету

если просто объявлять в пакете типа
function ShowForm(hOwner: hInst): Boolean; stdcall;
а потом вызывать

type

 TShowForm = function(hOwner: hInst): Boolean; stdcall;

var
 HandlePack: THandle;
 ShowForm: TShowForm;
begin
 HandlePack := LoadPackage('Package1.bpl');
 if HandlePack > 0 then
 begin

   @ShowForm := getProcAddress(HandlePack, 'ShowForm');

   if addr(ShowForm) <> nil then
     ShowForm(Application.Handle)
   else
     showMessage('Function not exists...');

ничё не получает он не видит адрес ф-ии
как быть ?


Mim1   (2004-07-06 07:58:00) [11]


> [2] ORMADA ©   (06.07.04 07:44)
> 2 Mim1 как и хде в пакете написать экспорт ф-ии ?

Где угодно (или почти), так же как в DLL.

Только зачем? Вроде пакеты и линкуются автоматом, то есть вы делаете другой модуль, увказываете что при компиляциии нужно использовать пакет, и в uses какого нибудь модуля указывайте модуль из пакета. Вы получите доступ ко всем указанным классам м переменным (и т.д.) из указанного модуля.


ORMADA   (2004-07-06 07:44:00) [12]

2 Mim1 как и хде в пакете написать экспорт ф-ии ?


Mim1   (2004-07-05 16:50:00) [13]

Так же, экспортируй функцию. Или в register регистрируй классы.


Наверх

Титульная страница Поиск, карта сайта Написать письмо