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

Вниз

Как написать опережающее объявления класса?   Найти похожие ветки 

 
TStas ©   (2008-05-06 20:13) [0]

Это есть в книжке по компонентам, только я чего-то никак не могу найти.:(


 
Джо ©   (2008-05-06 20:17) [1]

type
 TClass = class;

...
 TClass = class
   bla-bla
 end;


 
TStas ©   (2008-05-06 20:22) [2]

Спасибо, Джо. Только я нашел уже. В модуле, где комбобокс описан это сделано. Там и нашёл. :) Но спасибо всё равно. :)


 
korneley ©   (2008-05-06 20:41) [3]


> 2 Palladin

В будущий проект. особенно порадовало "где комбобокс"


 
Palladin ©   (2008-05-06 20:42) [4]

мнээээ... а я тут причем?


 
Джо ©   (2008-05-06 20:44) [5]

> [4] Palladin ©   (06.05.08 20:42)
> мнээээ... а я тут причем?

Нелегко быть известной личностью, на улицах пристают, всюду цитируют :D


 
korneley ©   (2008-05-06 20:52) [6]


> Palladin ©   (06.05.08 20:42) [4]
> мнээээ... а я тут причем?

http://delphimaster.net/view/15-1209669444/
 пятнадцатый пост :) На клаву, конкретно, никто не давил :))


 
Palladin ©   (2008-05-06 21:09) [7]

а... ты в этом смысле... я сразу просто не въехал...


 
TStas ©   (2008-05-06 21:11) [8]

Ой, опять не получается

type
 TNodeList = class; //Опережающее описание типа

type
 TNodeList = class(TList)
 private

 public
   procedure Delete(Index: Integer);
 end;
//Дельфи грязно ругаются на строке с опережающим описанием:
Type TNodeList is not yet completely defined


 
Anatoly Podgoretsky ©   (2008-05-06 21:16) [9]

Теперь это не опережающее определение, а два разных класса.
А ты что Дельфи по форуму изучаешь?
Странно и не эффективно.
Дыры в образование будут огромные.


 
TStas ©   (2008-05-06 21:29) [10]

А как опережающее сделать? Саму-то проблему я режил, в книжке не нажел, кому позвонил, все не знают. А как правильно сделать-то?


 
korneley ©   (2008-05-06 21:37) [11]


> TStas ©   (06.05.08 21:11) [8]

Ну, и почему не завершаем описание типа? хотя бы

procedure TNodeList.Delete(Index: Integer);
begin
 inherited;
end;


 
Anatoly Podgoretsky ©   (2008-05-06 21:40) [12]

> TStas  (06.05.2008 21:29:10)  [10]

Убери второй Type
В справке написано.


 
TStas ©   (2008-05-06 21:41) [13]

Да завершил, а ругаются, точнее, ругались, всё равно и не менее грязно. Я выкрутился просто: раз нужный мне список наследник TList, а то, что в нем должно хранитсься - объект, то в коструктор передаю просто TList.
Вот никак не могу найти в книжке по компонентам, где же опережающее описание типа. Но всё равно, хотелось бы, чтобы код был красивым. Практика показала, что красивый код и работает без глюков.


 
korneley ©   (2008-05-06 21:45) [14]


> TStas ©   (06.05.08 21:29) [10]
> А как правильно сделать-то?

 Правильно - внимательно читать сообщения компилятора. Они не просто сигнал: "Всё плохо". Они еще и путь указывают. Дао, так сказать :)


 
TStas ©   (2008-05-06 21:47) [15]

Вот именно DElete мне, в частности, пришлось перекрывать. Дельфи теперь считает, что это два разных класса.


 
korneley ©   (2008-05-06 21:53) [16]


>  Дельфи теперь считает, что это два разных класса

И кто из вас не прав?


 
TStas ©   (2008-05-06 23:15) [17]

Если кто знает, как это сделать - скажите. Это точно можно сделать. Об этомв "Искусстве создания компонентов" написано.


 
Anatoly Podgoretsky ©   (2008-05-06 23:20) [18]

Об этом написано в основах.
А ответы ты принципиально не читаешь?


 
Джо ©   (2008-05-06 23:23) [19]

> [8] TStas ©   (06.05.08 21:11)
> Ой, опять не получается
>
> type
> TNodeList = class; //Опережающее описание типа
>
> type
> TNodeList = class(TList)
> private
>
> public
>   procedure Delete(Index: Integer);
> end;
> //Дельфи грязно ругаются на строке с опережающим описанием:
>
> Type TNodeList is not yet completely defined

Опережающее определение должно быть в пределах *одного* type. Справка же, ну елки-палки.


 
sniknik ©   (2008-05-06 23:25) [20]

> А ответы ты принципиально не читаешь?
не только ответы, но и там "где комбобокс"... :)


 
TStas ©   (2008-05-09 05:11) [21]

Т. е. всё я делал правильно, только я обычно у всех классов свой type пишу. В этом-то и было дело... Век живи - век учись, дураком помрёшь!


 
TStas ©   (2008-05-12 17:57) [22]

А когда в одном Type всё здорово работает


 
Kolan ©   (2008-05-12 18:03) [23]

> Т. е. всё я делал правильно, только я обычно у всех классов
> свой type пишу.

Нахрена?


 
TStas ©   (2008-05-16 21:49) [24]

>Нахрена?
Чтобы было сразу видно, где какой класс начинается. Я так привык


 
Anatoly Podgoretsky ©   (2008-05-16 21:55) [25]

Тебе в [1] привели правильный пример и в [9] сказано в чем твоя ошибка, но вот что ты делал в 15 остальных сообщения непонятно.
Ты читай что тебе пишут, а если кто даст неправильный совет, то тут же и погибнет.



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

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

Наверх




Память: 0.52 MB
Время: 0.025 c
2-1210918003
Татьяна
2008-05-16 10:06
2008.06.08
Экспорт данных в Excel


2-1211113014
Franzy
2008-05-18 16:16
2008.06.08
Быстрый вопрос про Try...Except


2-1211118230
Антенна
2008-05-18 17:43
2008.06.08
Функция на ассемблере


2-1210990173
Qilgamesh
2008-05-17 06:09
2008.06.08
Как внедрить (вклеить) в файл другие файлы


15-1209092932
azamatufa
2008-04-25 07:08
2008.06.08
Нужна защита от СПАМА!!! Админы, сделайте цифорки!!!