Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2011, 17:44   #11
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Как паскаль проверяет что в подключенном модуле есть процедура которую вызвали?
похоже, что у вас есть определённое непонимание, на каком этапе и для чего используются DCU файлы...

DCU файлы - это, фактически, OBJ файлы в других средах программирования.
Там находится определённым образов сгенерированный ОБЪЕКТНЫЙ код.
Это код может быть использовать при компиляции/генерации исполняемого кода (т.е. когда Вы строите (build) Ваш проект нужные кусочки кода из DCU попадают в EXE). Использовать DCU файлы в runtime (т.е. во время работы полученного EXEшника невозможно. (по крайней мере, нормально использовать).
Поэтому на Ваш вопрос
Цитата:
А если заранее не известно имя файла?
отвечаю:
Если неизвестно имя библиотеки на момент написания программного кода, то нельзя определить, какие функции в этой библиотеке имеются.
(ну сами подумайте, каким образом может быть известно, какие функции в этой библиотеке имеются, если неизвестно, о какой библиотеке идёт речь?!!


p.s. А вообще тема пустая и бессмысленная.
Автору хочется "странного"... И при этом непонятно зачем...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.07.2011, 18:21   #12
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Использовать DCU файлы в runtime (т.е. во время работы полученного EXEшника невозможно. (по крайней мере, нормально использовать).
возможно, но это велосипед.
Цитата:
DCU файлы - это, фактически, OBJ файлы в других средах программирования.
объектники хранят информацию о том что в них находится.
Цитата:
Автору хочется "странного"... И при этом непонятно зачем...
автору хочется написать анализатор этих самых объектников, чоб знать что в нем есть.

2ТС:
ищите спецификацию на формат файла и вперед работать с ним.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.07.2011, 18:46   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Пепел Феникса
автору хочется написать анализатор этих самых объектников, чоб знать что в нем есть.
Пепел Феникса, с чего это Вы решили? Телепатия?
И для чего это автору знать?! (именно на этапе runtime!)

Цитата:
Сообщение от Пепел Феникса
ищите спецификацию на формат файла и вперед работать с ним.
для каждой версии Delphi свой формат DCU.
и, если не ошибаюсь, офицальной спецификации на формат DCU нет и никогда не было.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.07.2011, 18:51   #14
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Пепел Феникса, с чего это Вы решили? Телепатия?
она самая.
Цитата:
И для чего это автору знать?! (именно на этапе runtime!)
возможно для поиска нужгых функций среди кучи...на это уже мощности телепатора не хватает.
Цитата:
и, если не ошибаюсь, офицальной спецификации на формат DCU нет и никогда не было.
а я про оффициальную и не говорил.
хотя думаю для dcu 1982 года где-то уж точно оно есть.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.07.2011, 18:57   #15
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> для dcu 1982 года

Дельфи образца 1982 года? )

В дос паскале всегда TPU были, вот тут есть пару программ (вроде даже с исходниками). Вобще, довольно популярная тема лет 20 назад, сам этим страдал. Кому и зачем это сейчас нужно, хз.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 15.07.2011, 19:20   #16
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

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

Сдампить заголовки можно при помощи DCU2INT
dcu32int.exe -i <модуль.dcu>

Если модуль был скомпилен в другой версии Delphi, при попытке собрать проект, скорее всего, будет ошибка "Unit <модуль1> was compiled with a different version of unit <модуль2>"
пыщь
JTG вне форума Ответить с цитированием
Старый 15.07.2011, 19:43   #17
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

к съедению:
Цитата:
Article #17875: Delphi .dcu format

Question and Answer Database

FAQ2875D.txt Delphi .dcu format
Category :Object Pascal
Platform :All
Product :All 32 bit

Question:
How can I decompile a DCU file, so I may modify it to
work with later versions of Delphi / C++ Builder?


Answer:
The DCU file format is undocumented and may change
from version to version. You will need the source code
(.pas file) to modify/update the DCU.


7/16/98 4:31:28 PM


Last Modified: 01-SEP-99
Человек_Борща вне форума Ответить с цитированием
Старый 15.07.2011, 23:31   #18
iliili
Пользователь
 
Аватар для iliili
 
Регистрация: 06.03.2010
Сообщений: 56
По умолчанию

объясню задачу :
делаю программу редактор и переводчик из одного языка программирования в другой(в паскаль) , и нужно делать проверку на подключенные модули (узнать если у них данная процедура) . Пользователь может подключить не стандартный (не встроенный) модуль , а программа должна работать корректно и не говорить что в нем ничего нет))
Сделал ошибку.Исправил.Подзаработал
iliili вне форума Ответить с цитированием
Старый 16.07.2011, 01:17   #19
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> нужно делать проверку на подключенные модули

ну так пусть компилятор это и делает. Если даже выковырять список процедур из TPU/DCU, проверить совпадение типов параметров у них будет нетривиальной задачей.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 16.07.2011, 01:49   #20
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

ТС, ваша проблема в том, что формат DCU нигде не документирован.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Файлы ( Pascal ) Дабл Помощь студентам 6 24.12.2009 00:30
Не видны файлы *.dcu в директории указанной в Project->Options->Directories/Conditionals->Search Path Иванчо Общие вопросы Delphi 2 20.09.2007 10:57