Форум: "Потрепаться";
Текущий архив: 2003.11.20;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c