Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.18;
Скачать: CL | DM;

Вниз

Пакеты   Найти похожие ветки 

 
ORMADA ©   (2004-07-05 15:20) [0]

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


 
Mim1 ©   (2004-07-05 16:50) [1]

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


 
ORMADA ©   (2004-07-06 07:44) [2]

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


 
Mim1 ©   (2004-07-06 07:58) [3]


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

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

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


 
ORMADA ©   (2004-07-06 08:20) [4]

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...");

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


 
ORMADA ©   (2004-07-06 09:36) [5]

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

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

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


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


 
Mim1 ©   (2004-07-06 18:56) [6]

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

> 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;


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

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


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

Amoeba ©   (07.07.04 11:54)


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


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


 
Sandman25 ©   (2004-07-07 12:17) [9]

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

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


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

Sandman25 ©   (07.07.04 12:17)


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


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

(с)


 
Amoeba ©   (2004-07-07 12:39) [11]


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

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


 
Sandman25 ©   (2004-07-07 12:41) [12]

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

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


 
Sandman25 ©   (2004-07-07 12:43) [13]

[11] Amoeba ©   (07.07.04 12:39)

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



Страницы: 1 вся ветка

Текущий архив: 2004.07.18;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.044 c
4-1086097847
lehich
2004-06-01 17:50
2004.07.18
закрытие окна


3-1087533347
JB
2004-06-18 08:35
2004.07.18
Поиск в таблице


1-1089203729
ZiRoCool
2004-07-07 16:35
2004.07.18
Абсолютно тупой вопрос, но всё же :)


4-1086505286
Yustas
2004-06-06 11:01
2004.07.18
Работает ли приложение


14-1088508869
Rem
2004-06-29 15:34
2004.07.18
Культура Пития