![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как написать опережающее объявления класса?
TStas © (2008-05-06 20:13:00)Это есть в книжке по компонентам, только я чего-то никак не могу найти.:(
Anatoly Podgoretsky (2008-05-16 21:55:00) [1]Тебе в [1] привели правильный пример и в [9] сказано в чем твоя ошибка, но вот что ты делал в 15 остальных сообщения непонятно.
Ты читай что тебе пишут, а если кто даст неправильный совет, то тут же и погибнет.
TStas (2008-05-16 21:49:00) [2]>Нахрена?
Чтобы было сразу видно, где какой класс начинается. Я так привык
Kolan (2008-05-12 18:03:00) [3]> Т. е. всё я делал правильно, только я обычно у всех классов
> свой type пишу.
Нахрена?
TStas (2008-05-12 17:57:00) [4]А когда в одном Type всё здорово работает
TStas (2008-05-09 05:11:00) [5]Т. е. всё я делал правильно, только я обычно у всех классов свой type пишу. В этом-то и было дело... Век живи - век учись, дураком помрёшь!
sniknik (2008-05-06 23:25:00) [6]> А ответы ты принципиально не читаешь?
не только ответы, но и там "где комбобокс"... :)
Джо (2008-05-06 23:23:00) [7]> [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. Справка же, ну елки-палки.
Anatoly Podgoretsky (2008-05-06 23:20:00) [8]Об этом написано в основах.
А ответы ты принципиально не читаешь?
TStas (2008-05-06 23:15:00) [9]Если кто знает, как это сделать - скажите. Это точно можно сделать. Об этомв "Искусстве создания компонентов" написано.
korneley (2008-05-06 21:53:00) [10]
> Дельфи теперь считает, что это два разных класса
И кто из вас не прав?
TStas (2008-05-06 21:47:00) [11]Вот именно DElete мне, в частности, пришлось перекрывать. Дельфи теперь считает, что это два разных класса.
korneley (2008-05-06 21:45:00) [12]
> TStas © (06.05.08 21:29) [10]
> А как правильно сделать-то?
Правильно - внимательно читать сообщения компилятора. Они не просто сигнал: "Всё плохо". Они еще и путь указывают. Дао, так сказать :)
TStas (2008-05-06 21:41:00) [13]Да завершил, а ругаются, точнее, ругались, всё равно и не менее грязно. Я выкрутился просто: раз нужный мне список наследник TList, а то, что в нем должно хранитсься - объект, то в коструктор передаю просто TList.
Вот никак не могу найти в книжке по компонентам, где же опережающее описание типа. Но всё равно, хотелось бы, чтобы код был красивым. Практика показала, что красивый код и работает без глюков.
Anatoly Podgoretsky (2008-05-06 21:40:00) [14]> TStas (06.05.2008 21:29:10) [10]
Убери второй Type
В справке написано.
korneley (2008-05-06 21:37:00) [15]
> TStas © (06.05.08 21:11) [8]
Ну, и почему не завершаем описание типа? хотя бы
procedure TNodeList.Delete(Index: Integer);
begin
inherited;
end;
TStas (2008-05-06 21:29:00) [16]А как опережающее сделать? Саму-то проблему я режил, в книжке не нажел, кому позвонил, все не знают. А как правильно сделать-то?
Anatoly Podgoretsky (2008-05-06 21:16:00) [17]Теперь это не опережающее определение, а два разных класса.
А ты что Дельфи по форуму изучаешь?
Странно и не эффективно.
Дыры в образование будут огромные.
TStas (2008-05-06 21:11:00) [18]Ой, опять не получается
type
TNodeList = class; //Опережающее описание типа
type
TNodeList = class(TList)
private
public
procedure Delete(Index: Integer);
end;
//Дельфи грязно ругаются на строке с опережающим описанием:
Type TNodeList is not yet completely defined
Palladin (2008-05-06 21:09:00) [19]а... ты в этом смысле... я сразу просто не въехал...
korneley (2008-05-06 20:52:00) [20]
> Palladin © (06.05.08 20:42) [4]
> мнээээ... а я тут причем?
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1209669444&n=3
пятнадцатый пост :) На клаву, конкретно, никто не давил :))