Главная страница
    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-30813
Xristos
2002-05-31 10:06
2002.06.10
НАРОД!!! Как это можно сделать???...


1-30853
Ascan
2002-05-28 18:40
2002.06.10
Отключить оптимизацию кода в Delphi


3-30675
kserg@ukr.net
2002-05-17 12:57
2002.06.10
использование транкзакций в MSSQL


1-30907
Hawk2
2002-05-30 09:34
2002.06.10
Библиотека RxLib, стыдно, но спрошу.


1-30856
Янушка
2002-05-29 14:54
2002.06.10
Люди! Хочу выводить в label русский текст





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