Форум: "Основная";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
Вниз
Пакеты Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.035 c