Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1089000045
Pavelkq
2004-07-05 08:00
2004.07.18
Сохранение массива в файл.


14-1088593444
Kerk
2004-06-30 15:04
2004.07.18
ENV{ PATH_INFO }


1-1089064918
PoweR
2004-07-06 02:01
2004.07.18
установка компонент


8-1083256185
GlavBOTan
2004-04-29 20:29
2004.07.18
Редактирование MP3 или wave


3-1087522022
olhovik
2004-06-18 05:27
2004.07.18
Сортировка в Table





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский