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

Вниз

---|Ветка была без названия|---   Найти похожие ветки 

 
Vladislav_72   (2002-05-28 19:37) [0]

Помогите! Проект уже два дня стоит.
unit Usel;
uses .....,BaseLine;
interface
type
TLines = array [1..4] of TBaseLine; описал тип
TUsel = class(TGraphicControl)- пусть это класс А
private
FLines:TLines; - описал поле
...

unit BaseLine;
uses .....,Usel;
interface
type
TUselss = array [1..2] of TUsel; описал тип
TBaseLine = class(TGraphicControl))- пусть это класс B
private
FUselss:TUselss; - описал поле
....
[Fatal Error] Usel.pas(5): Circular unit reference to "Usel"

Как избавиться от циклической зависимости.
Ну нужны мне классе А поле FLines содержащий класс BaseLine,
а в классе В поле FUselss содержащие класс Usel.

Что делать помоги-и-ите.


 
Esu   (2002-05-28 19:54) [1]

Ставь uses <...> не в начале, а в implementation

Например:

implementation

uses Log, Main;


 
Vladislav_72   (2002-05-28 20:02) [2]

Если ставлю туда, это в хелпе так написано.
Тогда [Error] Usel.pas(9): Undeclared identifier: "TBaseLine"
Ругается на строчку класса А TLines = array [1..4] of TBaseLine;
Потому что Класс описан выше по тексту, а implementation ниже.


 
Vladislav_72   (2002-05-28 20:04) [3]

Мне надо чтобы все работало... Вот такая беда прям...
У кого есть какие соображения ????


 
MaximatorVeter   (2002-05-28 20:17) [4]

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


 
Anatoly Podgoretsky   (2002-05-28 20:39) [5]

Vladislav_72 (28.05.02 19:37)
Тебе поможет только пистолет, FLines и BaseLine, приватные!


 
Cobalt   (2002-05-29 00:27) [6]

>MaximatorVeter © (28.05.02 20:17)
>Разбить проект на модули так, чтобы не было циклических ссылок и все дела!
1)Нифига подобного! Как раз наоборот.
Пихай все в один юнит.
2)Используй указатели, которые позже в implementation будешь приводить к нужному тебе типу.


 
Cobalt   (2002-05-29 00:29) [7]

Ну, и конечно, не забудь для 2-го - в implementation uses указать юниты


 
SerGa   (2002-05-29 02:48) [8]

Лично моя жизнь. Описываю подобные "общие" константы, классы, записи, типы,и т.д. в отдельном модуле, который и записываю в Uses соответствующих модулей.
При всем при этом, всячески стараюсь избежать ссылки на модуль в секции "interface", ибо, чаще всего - это не нужно. И чаще всего - вредно!
В то время как ссылка на модуль в секции "implementation" еще никому, никогда, не портила жизнь.


 
Vladislav_72   (2002-05-30 01:11) [9]

To Cobalt©
Ну нужны мне в классе А поле FLines содержащий класс BaseLine,
а в классе В поле FUselss содержащие класс Usel.
Таким образом в классе ВаseLine храниться класс Usel, а в Usel храниться класс BaseLine. Пихать все в один юнит, тоже не получиться. Потому что допустим что сначала опишу Usel потом BaseLine, т.к. BaseLine опишиться ниже, то в Usel (который вверху) компилятор не видит поле типа BaseLine (которое описано внизу).
TO Anatoly Podgoretsky ©
Я конечно новичок, но выражение типа -> Тебе поможет только пистолет, FLines и BaseLine, приватные! Мне пока не о чём не говорит. Ну и что Что приватные... Непонял ?



 
Vladislav_72   (2002-05-30 01:16) [10]

To Cobalt ©
Хочу посмотреть на пример указателей, которые позже в implementation буду приводить к нужному мне типу.


 
KS   (2002-05-30 02:14) [11]

А если все-таки в один модуль ?

type
TBaseLine = class;

TLines = array [1..4] of TBaseLine;
TUsel = class(TGraphicControl)
private
FLines: TLines;
end;

TUselss = array [1..2] of TUsel;
TBaseLine = class(TGraphicControl)
private
FUselss: TUselss;
end;


 
SerGa   (2002-05-30 02:17) [12]

> Ну нужны мне в классе А поле FLines содержащий класс BaseLine,
а в классе В поле FUselss содержащие класс Usel.
Таким образом в классе ВаseLine храниться класс Usel, а в Usel храниться класс BaseLine. Пихать все в один юнит, тоже не получиться. Потому что допустим что сначала опишу Usel потом BaseLine, т.к. BaseLine опишиться ниже, то в Usel (который вверху) компилятор не видит поле типа BaseLine (которое описано внизу).

А директива forward Вам не известна?


 
Vladislav_72   (2002-05-30 17:36) [13]

To SerGa©
Насколько я знаю директивой forward описывают только процедуры и функции, а классы нет.


 
Anatoly Podgoretsky   (2002-05-30 17:56) [14]

Vladislav_72 (30.05.02 01:11)
А то, что ты из разных модулей никак не сможешь к ним обратиться

Vladislav_72 (30.05.02 17:36)
Ты понял неправильно


 
Esu   (2002-05-30 18:08) [15]

Тут уже ничего не поможет :) Этот код мне произведение Пелевина напомнил (во дожился).
(только для выражения мысли, философию не трогать)
"
- Что есть мир
- Мир это Йа
- А я кто ?
- Ты и есть мир, он в тебе
- Йа понял
"

Или там орех содержит в себе тыкву, которая в свою очередь содержит в себе орех.


 
oomneeq   (2002-05-30 21:13) [16]

>Vladislav_72 (30.05.02 17:36)
>To SerGa©
>Насколько я знаю директивой forward описывают только процедуры и функции, а классы нет.

Описывают, описывают. еще как.

Только самого слова forward писать не надо.

KS подсказал правильный выход.




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

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

Наверх





Память: 0.48 MB
Время: 0.007 c
1-30740
Miron12
2002-05-28 18:37
2002.06.10
ошибка Index is out of bounds


1-30908
Alexey_
2002-05-17 17:38
2002.06.10
Как удалить директорию под Windows NT


1-30876
Andrew22
2002-05-29 16:27
2002.06.10
Закрытие проги.


1-30867
MViper
2002-05-29 16:47
2002.06.10
Работа с dll


1-30900
Роман Мишин
2002-05-30 09:43
2002.06.10
печать шрифтов не установленных в системе





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