Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Вниз

Доступ к процедуре регистрации   Найти похожие ветки 

 
HydraMarat   (2004-03-04 01:04) [0]

Здравствуйте, уважаемые Мастера! Нарисовался такой вопросик. Все мы знаем, что с помошью процедуры Register Делфийское IDE регистрирует компоненты. Так вот, собственно: как программно получить доступ к этой процедуре? Handle пакета полим через LoadPackage, а дальше? Вообщем нужно взывать ее принудительно.

Заранее, Спасибо!


 
Германн ©   (2004-03-04 02:08) [1]

Помммедленеййй пожалуста, я записсссываю... © Шурик. "Кавказская пленница" :))


 
Mim   (2004-03-04 05:37) [2]

А зачем?
Наверное можно вызвать InitializePackage которая вызавет все register, но все равно особого смысла я невижу.
Там же происходит регистрация компоент на палитере, а пол-литры у вас как я понимаю нет :).


 
Юрий Зотов ©   (2004-03-04 06:39) [3]

Во-первых, процедура эта всегда декларируется в секции interface, поэтому ничто не мешает просто вызвать ее точно так же, как вызывается и любая другая процедура (есди надо, добавив при вызове имя модуля).

Во-вторых, вызвать ее можно и через GetProcAddress. Только сначала надо любым просмотрщиком DLL-ек определить истинное имя процедуры в пакете (к Register там будет добавлено имя модуля и еще что-нибудь).


 
HydraMarat   (2004-03-04 23:34) [4]

Mim
InitializePackage не вызывает процедуры Register. Это делает IDE при загрузке.

Юрий Зотов
Да, простой GetProcAddress(Pkg, "Register") ничего не дает. Добавляется имя юнита?... Гм... интересно. Обязон попробую!

Всем спасибо! Думаю седня я это "добью".


 
Юрий Зотов ©   (2004-03-04 23:50) [5]

> HydraMarat   (04.03.04 23:34) [4]

Думаю, экспортируемое имя будет выглядеть так:
@Имя_модуля@Register$qqrv

Но этот способ оправдан только когда заранее неизвестно, есть ли такая процедура, или ее нет. Иначе гораздо проще взять - да и вызвать, без заморочек:
Имя_модуля.Register


 
Petr V. Abramov ©   (2004-03-05 01:43) [6]

Юрий Зотов ©   (04.03.04 23:50) [5]
 Перефразирую по-другому - когда Имя_модуля стоит в uses и, следовательно, пакет прилинкован, хоть и как RunTime, к приложению". Вопрос интересный, поэтому с автора - ответ на вопрос "как же на самом деле будет выглядеть экспортируемое имя".


 
HydraMarat   (2004-03-05 13:10) [7]

Да собственно так оно и оказалося! Через GetPackageInfo я получил весь список модулей пакета, и сформировал имя именно по образцу @Имя_модуля@Register$qqrv. GetProcAddress все нашла и все Register"ы вызволись. Не могу понять для чего такие заморочки? Нельща просто ИмяМодуля.Register? А то какие-то qqrv!


 
HydraMarat   (2004-03-05 13:12) [8]

ой, скока орфографических ошибок... простите.


 
Юрий Зотов ©   (2004-03-05 13:31) [9]

> HydraMarat   (05.03.04 13:10) [7]

> GetProcAddress все нашла и все Register"ы вызволись

Дык... собственно, и сомнений не было (просто такая задача уже решалась, только подзабыл детали)
:о)

> А то какие-то qqrv!

Надо полагать, что точно об этом знает только Borland. Но если проанализировать подобные постфиксы, то можно предположить, что они означают какую-то систему, описывающую параметры функции. В частности, qqrv означает - "без параметров".

P.S.
Рискну предугадать Ваш следующий вопрос - как при загрузке пакета автоматически зарегистировать все объявленные в нем классы.
:о)


 
HydraMarat   (2004-03-06 00:23) [10]

Да не... Мне нужно было поймать процедуры регистрации. Соответствущию переменные (в Classes и, по-моему, в DesignIntf) я присвоил, так что теперь все чики-пики. :)


 
Юрий Зотов ©   (2004-03-06 00:27) [11]

> HydraMarat   (06.03.04 00:23) [10]

> так что теперь все чики-пики

Думаю, это пока что. Месяцев на несколько. А потом...
:о)


 
Petr V. Abramov ©   (2004-03-06 01:41) [12]

> Юрий Зотов ©   (06.03.04 00:27) [11]
 <offtop>
   А потом сто умных не ответят :)



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

Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.038 c
8-1069078680
Smoker
2003-11-17 17:18
2004.03.28
Bmp... вопрос...


1-1079024994
Riki
2004-03-11 20:09
2004.03.28
Image.Canvas


1-1078776744
Гиричев Руслан
2004-03-08 23:12
2004.03.28
Горячие клавиши


1-1078944458
TSa
2004-03-10 21:47
2004.03.28
Кнопка закрыти в MDI приложениях


6-1074355229
afunix
2004-01-17 19:00
2004.03.28
Как перехватить входящие/исходящие пакеты





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский