Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.03.2010, 05:56
Axmed0207 Axmed0207 вне форума
Прохожий
 
Регистрация: 01.03.2010
Сообщения: 4
Репутация: 10
По умолчанию Локальные функции dll

Вопрос следущий: как создать локальную(внутреннюю) функцию в dll библиотеке (Delphi 7) ??

2 часа поиска в инете и параллельные попытки решить проблему "своими силами" не принесли результатов.
Пробывал просто не вносить название функции в список экпортируемых, но после этого компилятор начинает ругаться на любое упоминание названия функции в коде..

Есть предположение, что нужно что-то прописать в разделе types, как это делается в форме, но не знаю что конкретно. И к тому же в коде нет этого раздела
Ответить с цитированием
  #2  
Старый 01.03.2010, 07:26
Axmed0207 Axmed0207 вне форума
Прохожий
 
Регистрация: 01.03.2010
Сообщения: 4
Репутация: 10
По умолчанию

Решение найдено - размещение кода "локальной" функции перед "экспортируемыми", в которых используется "локальная".
При этом было установлено эксперементально, что любая из функций длл, в том числе и "экспортируемые" могут ссылатся друг на друга внутри библиотеки, главное чтобы код той функции которая ссылается, стоял после кода функции на которую идет ссылка. Похоже на бред, но это так. =\
Но что-то мне подсказывает, что мое решение не самое грамотное, и существует более цивилизованый подход
Ответить с цитированием
  #3  
Старый 01.03.2010, 07:46
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,034
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Есть еще ключевое слово Forward, позволяющее определить функцию в начале файла. Тогда взаимное расположение кода функций роли не играет.
Ответить с цитированием
  #4  
Старый 01.03.2010, 09:34
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Цитата:
Сообщение от Axmed0207
Решение найдено - размещение кода "локальной" функции перед "экспортируемыми", в которых используется "локальная".
При этом было установлено эксперементально, что любая из функций длл, в том числе и "экспортируемые" могут ссылатся друг на друга внутри библиотеки, главное чтобы код той функции которая ссылается, стоял после кода функции на которую идет ссылка. Похоже на бред, но это так. =\
Но что-то мне подсказывает, что мое решение не самое грамотное, и существует более цивилизованый подход
Вообще то это не бред, а спецификация языка. Если функция не объявлена в интерфейсной части модуля или форвард то видна только ниже стоящим.
Более цивильный подход - оставить в файле dpr только секцию экспорта и присоединить к нему необходимое тебе количество модулей ( простых unit, а не форм ) и в них реализовать функции ( не забывая хотябы экспортируемые объявлять в интерфейсной секции ) . как это делается в проектах приложений.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:22.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter