Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.009 c
14-66131
mOOx_
2003-10-28 15:09
2003.11.20
ODBC


3-65756
Yu
2003-10-31 14:40
2003.11.20
DBLookupComboBox


1-65995
Denisiy
2003-11-10 15:25
2003.11.20
Звуковой сигнал с MessageDlg


1-65960
Софейков Костя
2003-11-10 19:23
2003.11.20
циклы


1-65838
Mohamed
2003-11-11 17:18
2003.11.20
Paint





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский