Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Exports Summ index 10;



После имени функции стоит ключевое слово index и числовой индекс функции. Я люблю нумеровать свои функции, начиная с10. Этой я дал десятый индекс (ты можешь попробовать другое число. Индексы и имена должны быть уникальными!!! Вот несколько примеров:

exports Func1 index 10 name 'Fun', Func2 Insert, Func3 index 11, Func4 index 11,// Ошибка, такой индекс уже существует Func5 name 'Don';

В объявлении последней процедуры я явно использовал ключевое имя name, чтобы указать экспортной функции новое имя. Теперь внутри библиотеки эта функция реализована как Func5, но внешние приложения должны обращаться к ней по имени Don.

Объявлять можно и так:

exports Func1 index 10 name 'Fun', exports Func2 Insert, exports Func3 index 11,

Перекомпилируй проект, чтобы изменения вошли в силу (нажми Ctrl+F9).

Теперь возвращаемся в проект, где мы используем функцию. В разделе implementation подправляем описание нашей функции:

function Summ; external 'FirsDLLProject.dll' index 10;

Теперь вместо ключевого слова name стоит слово index и тот же номер.
Запусти проект и убедись, что он работает корректно.

На компакт диске, в директории \Примеры\Глава 18\IndexName ты можеш ь увидеть приме р это й программы.

18.3. Замечания по использованию библиотек.

огда я сказал, что DLL файлы нельзя запускать, то я и соврал, и нет. В принципе, библиотеки действительно нельзя запускать, но Delphi может сделать это. Открой нашу библиотеку и выбери из меню Run пункт

Parameters. Перед тобой откроется окно, как на рисунке 18.3.1.

В строке Host Application нужно указать имя приложения, которое умеет загружать библиотеку. Теперь попробуй запустить проект (клавиша F9). Запустить указанная программа.

Зачем нужен этот способ? Если ты попытался запустить программу, и она показала ошибку в коде, где вызывается функция из динамической библиотеки, то можно попытаться запустить библиотеку таким образом. Если снова произойдёт ошибка, то Delphi покажет строку с ошибкой.

Небного позже я покажу тебе, как можно отлаживать программы, выполнять их по шагам. Тогда ты сможешь узнать, что таким образом можно отлаживать и динамические библиотеки. А именно, они могут выполняться в пошаговом режиме (построчно) и ты будешь контролировать весь процесс выполнения.

Пока что я о библиотеках говорил достаточно много хорошего, но не сказал самого главного. Функции и процедуры из динамической библиотеки не могут прямо влиять на ход основной программы. Это значит, что мы не можем получить доступ к окнам основной программы, изменить какие-то переменные или ещё чего-нибудь.

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

Имена библиотек пиши полностью, вместе с расширением. Без расширения DLL может быть не найдена в Windows NT/2000/ХР, хотя в Windows 98 всё будет работать нормально.

Обязательно соблюдай индексы и параметры процедуры, иначе могут возникнуть ошибки. Лучше лишний раз проверить, чем потом долго искать опечатку.

18.4. Хранения формы в динамических библиотеках.

еперь я хочу показать, как можно хранить в динамических библиотеках целые окна. Очень удобно, когда редко используемые окна, находятся в динамической библиотеке. В этом случае основной файл очень сильно

разгружается от лишнего кода.

Ещё одно преимущество такого кода – библиотека может использовать для вывода информации на экран своё окно. Как я уже сказал, из dll файла нельзя получить доступ к переменным и данным основной программы. Это значит, что из DLL файла нельзя ничего вывести в окна основной программы. Но библиотека может создать собственное окно и использовать для вывода необходимых данных именно его.

Итак, создавай новую DLL библиотеку и сохрани её под именем ProjectDLL. Теперь добавим к нашей библиотеки одну экспортную процедуру ShowAbout:





Дата публикования: 2014-11-28; Прочитано: 216 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...