Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.01;
Скачать: CL | DM;

Вниз

Компоновка кода Делфями   Найти похожие ветки 

 
dima_matrix ©   (2003-08-16 12:55) [0]

Добрый всем день!
Столкнулся со следующей проблемой, может подскажет кто как с этим бороться. При даже небольших изменениях в проекте (довольно большем) изменяется код программы генерируемый компилятором Делфи для функций, которые никакого отношения к изменениям вообще не имеют. А мне очень важно чтобы данный код генерировался неизменным при модифицировании проекта (если модификации не касаются этих функций, конечно). Буду благодарен всем за любую помощь в данном вопросе.


 
Skier ©   (2003-08-16 13:18) [1]

>dima_matrix © (16.08.03 12:55)

> изменяется код программы генерируемый компилятором Делфи
> для функций, которые никакого отношения к изменениям вообще
> не имеют.

Поясни...


 
Романов Р.В. ©   (2003-08-16 14:17) [2]

Вынеси эти функции в dll или bpl.


 
dima_matrix ©   (2003-08-16 14:29) [3]

Идея интересная вынести во внешний модуль, а если нельзя? Настройками как-то можно допиться такого результата?
2 Skier : код в машинных кодах изменяется для функций при изменении исходников другой функции...


 
Skier ©   (2003-08-16 14:32) [4]

>dima_matrix © (16.08.03 14:29) [3]
Дык...это же вполне естественно. Даже странно...
Такой вопрос : почему вообще у тебя возник этот вопрос ?
что хочеть сделать в конечном итоге ?


 
Романов Р.В. ©   (2003-08-16 14:36) [5]


> Skier © (16.08.03 14:32) [4]

Наверно защиту


 
Юрий Зотов ©   (2003-08-16 14:43) [6]

> dima_matrix © (16.08.03 14:29) [3]


> код в машинных кодах изменяется для функций при изменении
> исходников другой функции...

Вероятно, изменяется все же не сам код функций, а их адреса?

Что и естественно. Компилятор ведь строит код ВСЕЙ программы разом. И у него нет настроек, которые приказывали бы ему располагать какие-то функции по фиксированным адресам, это уж он сам решает, где какую функцию разместить.

Выносите функции в отдельный модуль и будет Вам счастье. Проще - в BPL.


 
dima_matrix ©   (2003-08-16 15:23) [7]

Да нет, счастья не будет - на адреса-то я есстественно не завязывался, они могут отличаться для одной и той же программы при разных запусках... Господин Романов абсолютно прав по поводу защиты - при этом выносить функции во внешние модули не совсем разумно. Вы не могли бы посоветовать по этому поводу что-нибудь мне неразумному? А по поводу комментариев Skier - почему это есстественно? Я не могу похвастаться супер глубокими познаниями в Делфи, я вообще-то на ВижуалСях пишу, и там компилятор компилирует каждый файл проекта независимо, и если в файле не было изменений (и отключить оптимизацию), то генерировать он должен тот же код. И это кстати по поводу комментария господина Зотова, по-моему копилятор компилит не весь проект сразу - это задача компоновщика. Может быть я не прав, но все равно спасибо за коментарии...


 
Романов Р.В. ©   (2003-08-16 15:32) [8]

А что компилятор действительно генерит другой код функций в которых не было изменений?


 
Юрий Зотов ©   (2003-08-16 16:38) [9]

> dima_matrix © (16.08.03 15:23) [7]

Под словом "компилятор", конечно, имелась в виду кобинация "компилятор + линковщик". Ну да ладно, не в этом суть.

Похоже, Вам нужен перемещаемый код в виде данных с его исполнением в стеке. Это было бы элементарно, если бы не проблема модификации адресов, на которую Вы, видимо и наткнулись. Посмотрите по этому поводу вот что:
http://www.programme.ru/archive/2001/3/032001_3.phtml

И обратите особое внимание на фразу:
"придется передавать стековому коду указатели на вызываемые функции как аргументы. Это несколько неудобно, но более короткого пути, видимо, нет".

А также на пример после нее. Удачи!


 
dima_matrix ©   (2003-08-18 19:22) [10]

Спасибо за совет, обязательно посмотрю.



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

Текущий архив: 2003.09.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
14-1611
Veliar
2003-08-13 17:43
2003.09.01
Повисает Дельфи


7-1682
Oleg
2003-06-17 18:42
2003.09.01
Windows shutdown


6-1541
BlackSun
2003-06-26 18:42
2003.09.01
RasGetEntryDialParams - не могу получить номер телефона


1-1491
KSergey
2003-08-17 13:07
2003.09.01
Можно ли изменить шаблоны Code Complete?


3-1317
Ренат
2003-08-08 11:11
2003.09.01
Ошибки при выполнении команды SQL