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

Вниз

interface и implementation   Найти похожие ветки 

 
Yakudza ©   (2003-10-29 15:05) [0]

Принципиально чем-то отличаеться обьявление модуля в разделе uses после interface или после implementation ?


 
Polevi ©   (2003-10-29 15:10) [1]

доступностью его в секции interface


 
Johnny Smith ©   (2003-10-29 15:11) [2]

Конечно.
То, что ты объявил в interface может быть использовано в как в описании типов, так и в реализации их методов.
То, что в implementation - только в реализации.


 
Skier ©   (2003-10-29 15:12) [3]

оказывает влияние на появление ошибки "Циклические ссылки" :)


 
Anatoly Podgoretsky ©   (2003-10-29 15:12) [4]

Johnny Smith © (29.10.03 15:11) [2]
Вопрос про uses, Polevi ответил


 
Johnny Smith ©   (2003-10-29 15:14) [5]

2Anatoly Podgoretsky © (29.10.03 15:12) [4]
Johnny Smith © (29.10.03 15:11) [2]
Вопрос про uses, Polevi ответил

Обогнал :)))


 
Юрий Зотов ©   (2003-10-29 15:15) [6]

Для самого этого модуля - ничем (естественно, кроме того, что в Паскале каждая вещь становится доступна ПРОСЛЕ ее объявления - то есть модули из uses в implementation работают в самом этом implementation и не работают ВЫШЕ него).

А для других модулей - различие есть. Потому что указание модуля в implementation НЕ считается рекурсивным, даже если этот модуль прямо или косвенно ссылается на текущий. Иногда бывает необходимо.


 
Johnny Smith ©   (2003-10-29 15:17) [7]

2Юрий Зотов © (29.10.03 15:15) [6]
Иногда бывает необходимо.
Ну, я бы сказал, довольно часто...


 
Anatoly Podgoretsky ©   (2003-10-29 15:21) [8]

Потому что для компиляции вначале нужна только заголовочная часть (интрефейсная) поскольку только она и нужна и видна другому модулю.


 
kaif ©   (2003-10-29 15:28) [9]

Можно ли сказать, что implementation это своего рода инкапсуляция на уровне модуля?


 
Yakudza ©   (2003-10-29 15:28) [10]

2Юрий Зотов ©
а в interface я так понял указание модуля считается рекурсивным.
А при каких обстоятельствах это иногда бывает необходимо ?


 
Skier ©   (2003-10-29 15:29) [11]

>kaif © (29.10.03 15:28) [9]
Если это можно назвать скрытием реализации, то можно назвать и
инкапсуляцией.


 
Anatoly Podgoretsky ©   (2003-10-29 15:30) [12]

kaif © (29.10.03 15:28) [9]
Нет, реализация

Yakudza © (29.10.03 15:28) [10]
Нет не считается, пока не получится рекурсия. И это никогда не нужно, поскольку не сможешь откомпилироваться, рекурсия, бесконечная компиляция.


 
Юрий Зотов ©   (2003-10-29 15:50) [13]

> Yakudza © (29.10.03 15:28) [10]
> А при каких обстоятельствах это иногда бывает необходимо?

Проще показать на очень распространенной конкретной ситуации.

unit MDIMainFormUnit;
interface
uses
..., MDIChildFormUnit;
...
implementation
...
end.

unit MDIChildFormUnit;
interface
...
implementation
uses
..., MDIMainFormUnit; // Чтобы не было рекурсии
...
end.


 
Yakudza ©   (2003-10-29 17:56) [14]

Да, попытался добавить один юнит к другому в interface, ругаеться что [Fatal Error] Main.pas(8): Circular unit reference to "Main".

А как грамотно сделать если например у меня обьявлен тип

type
MyType = record
bu = integer
end;


в unit main

мне его нужно юзать в другом юните н методе Create,
только еще раз обьявить в unit second ?


 
Sandman25 ©   (2003-10-29 18:02) [15]

[14] Yakudza © (29.10.03 17:56)

Перенести объявление типа в новый модуль и использовать этот модуль из модулей main и second


 
Anatoly Podgoretsky ©   (2003-10-29 21:41) [16]

Yakudza © (29.10.03 17:56) [14]
Неверная модель, надо пересматиривать или делать с помощью третьего модуля.


 
Yakudza ©   (2003-10-30 10:18) [17]

Спасибо за советы.


 
Igorek ©   (2003-10-30 11:05) [18]

Старый недостаток конче%%го Паскаля.


 
blackman ©   (2003-10-30 12:09) [19]

>Anatoly Podgoretsky
>Неверная модель, надо пересматиривать или делать с помощью >третьего модуля
Кто-то хотел подробности написать :)


 
Юрий Зотов ©   (2003-10-30 13:29) [20]

> Igorek © (30.10.03 11:05) [18]

Недостаток ???

Я бы отнес эту фичу к достоинствам. Вам приходилось делать проекты размером под миллион строк (естественно, с кучей модулей). Приходилось продумывать их структуризацию?



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

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

Наверх




Память: 0.51 MB
Время: 0.029 c
6-66048
Vitold S
2003-09-23 16:47
2003.11.20
Наверное ктолибо создавал


3-65730
Andrew1_1
2003-11-01 18:43
2003.11.20
BDE по сети


1-65914
Prof
2003-11-08 12:12
2003.11.20
Поиск файла


1-65987
race1
2003-11-10 16:33
2003.11.20
check combobox


3-65780
Nikolai_S
2003-11-03 10:14
2003.11.20
Сжатие запароленной базы данных MS Access