Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];

Вниз

Глобальные процедуры   Найти похожие ветки 

 
Андрей   (2003-05-17 10:09) [0]

Как описать процедуру, что бы она вызывалась во всех модулях


 
Ihor Osov'yak   (2003-05-17 10:17) [1]

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

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


 
y-soft   (2003-05-17 11:54) [2]

Немного подробней: общепринято такие процедуры выносить в отдельные модули общего назначения и объявлять в их интерфейсной части. В модулях, использующих данные процедуры, необходимо поместить ссылку на модуль общего назначения в uses секции interface или implementation. Циркулярные ссылки, как уже сказал Ihor Osov"yak ©, не приветствуются...


 
Ihor Osov'yak   (2003-05-17 13:39) [3]

тоже в плане подробностей - ну поболтать меня потянуло, а может кому и польза будет:

>Циркулярные ссылки, .. не приветствуются

Не приветствуются.. Но можно, за усключением явных или неявных из интерфейсных секций.. Из секций реализаций можно. Это очень легко понять, если предствить себе, как работает однопроходный компилятор. Но несмотря на то что можно, все-же лучше избегать, вводя дополнительные модули, и делая вынос соотв. конструкций в этот модуль...

На примере:

unit unit1;

interface

procedure proc1;

implementation

uses unit2;

procedure proc1;
begin

...
proc2;
...
end;
end.




unit unit2;

interface

procedure proc2;

implementation

uses unit1;

procedure proc2;
begin

...
proc1;
...
end;
end.



Это компилятор скушает на-ура. Но не стоит этим увлекаться.. Не говоря уже здесь об опасности нарваться на бесконечную рекурсию (для данных примеров взаимодействия proc1 и proc2)

Проходит также и такой вариант (одна ссылка с интерфейсной и перекрестная с секции реализации):

unit unit3;

interface

...

uses unit4;

implementation
..
end.


unit unit4;

interface
...

implementation

uses unit3;
...
end.



Но снова так не стоит делать, наиболее оптимально:


unit unit3;

interface

uses unit_Add;

implementation
..
end.


unit unit4;

interface
....

implementation

uses unit_Add;

....
end.

unit unit_Add;

interface

// здесь декларации тех вещей, которые провоцировали перекрестные ссылки...
....

implementation

// понятно, здесь реализации, если нужно :-)
....
end.






Естественно следующий вариант не проходит (вспоминаем об однопроходном компиляторе):

unit unitA

interface
uses unitB;
....

unit unitB;

interface
uses unitA;















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

Форум: "Основная";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.008 c
14-95082
OverSet
2003-05-11 00:14
2003.05.29
VR-Online


4-95162
bobo
2003-04-02 09:58
2003.05.29
И снова о плавной прокрутке


8-94969
AngelSaint
2002-12-20 09:45
2003.05.29
Как программировать Sound Blaster


1-94854
sapsi
2003-05-20 08:00
2003.05.29
Обновление меток


1-94887
Zew
2003-05-16 16:35
2003.05.29
В трей при запуске





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский