Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Win API


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / WinAPI

Выпуск № 416
от 19.04.2007, 13:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 414, Экспертов: 55
В номере:Вопросов: 1, Ответов: 1


Вопрос № 82506: Здравствуйте, уважаемые эксперты! Изложу суть дела: написал приложение на Delphi6, использующее API функции, которые помещены в одну общую функцию, находящуюся в dll библиотеке, написанной в C++Builder. Проблема в следующем: При стати...

Вопрос № 82.506
Здравствуйте, уважаемые эксперты!
Изложу суть дела:
написал приложение на Delphi6, использующее API функции, которые помещены в одну общую функцию, находящуюся в dll библиотеке, написанной в C++Builder.
Проблема в следующем:
При статической загрузке библиотеки (в начале pas файла происходит external вызов функции из библиотеки) все работает хорошо.
В качестве параметра общей функции передается число, и в зависимости от его значения (например, 1.2 и т.п.) происходят определенные операции (в частности, перезагрузка, выключение компьютера и др.).
Но мне нужно загружать библиотеку динамически. В этом случае то число, что я помещаю в функцию при вызове в приложении после загрузки библиотеки и получения адреса процедуры(getProcAddress), не используется в ней (функции), и в итоге не происходит выбора нужной операции в функции в библиотеке. По-моему, проблема именнно в этом, но я не знаю, как передать значение, а если оно передается (хотя сам проверял по возвращаемому значению функции), то прошу объяснить, что не так.
Я пытался разобрать более простой пример, но и здесь та же ситуация.
Если возможно, объясните на нем.
Функция number возвращает в этом случае 144080.
Эта и моя функции ничем не отличаются, только содержанием, но также есть выбор if,и он не выполняется (только в случае динамической загрузки).
Представлены фрагмент вызова функции по нажатии на кнопку и содержание библиотеки.
Спасибо!

Приложение:

Отправлен: 14.04.2007, 00:25
Вопрос задал: Afanasyev Yevgeniy (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: PGM
Здравствуйте, Afanasyev Yevgeniy!

1. В описании типа TNumber стоит добавить stdcall.

2. Слегка странно выглядит код динамической линковки - может так тоже должен работать, но я обычно использую присваивание без знака @, т.е. number := GetProcAddress(h, 'number'); и все прекрасно работает. Может здесь проблема?
Ответ отправил: PGM (статус: 4-ый класс)
Ответ отправлен: 14.04.2007, 11:54
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо!Теперь работает (сам не обратил внимание, что при стат. вызове пишется stdcall)


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.50 (beta) от 15.04.2007
Яндекс Rambler's Top100

В избранное