![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Свойство с необязательным индексом
SPeller © (2004-08-02 08:02:00)Всем доброго времени суток!
У меня такая вот загогулина. Есть свойство класса, объявленное так:
property SelEndPos[ NewLineIfEOL: Boolean = False ]: TPos read GetSelEndPos write SetSelEndPos;
где TPos - это структура, имеющая 2 поля типа Integer. Обращаю внимание на необязательный индекс. Делаю Auto-completion классу, и получаю методы Get и Set. Причем оба с ошибками и при попытке скомпилить всё это, выскакивает два incompatible types. С методом Get всё просто - надо лишь добавить значение параметра по умолчанию:
function GetSelEndPos( NewLineIfEOL: Boolean = False ): TPos;
А вот с методом Set уже хуже. В изначальном виде
procedure SetSelEndPos( NewLineIfEOL: Boolean; const Value: TPos );
компилятор ругается, а параметр по умолчанию перед обязательным не подставишь. Кто-нибудь может подсказать как быть в этой ситуации? Или возможность вписать необязательный индекс - это лишь замануха? :)
SPeller (2004-08-04 15:47:00) [1]Очень странно что они "не думали об этом"..
KSergey (2004-08-04 12:56:00) [2]Ну они не думали, что это кто-то попытается сделать :)
Как "магические" фразы в ворде.
Впрочем, могу заблуждаться.
SPeller (2004-08-04 12:48:00) [3]Я просто попробовал вставить = False, оно и проглотило. Даже метод Get можно прописать. Но вот дальше... Может это не доработка? Ведь спокойно могла сказать что нельзя такого делать.
KSergey (2004-08-04 12:41:00) [4]Есть подозрение, что так сделать вообще нельзя... Не предусмотрено. Да и логике как-то оно не очень, по моему, соответствует ;) Для того и индксированное св-ство, хотя я и понимаю, что хотеться может многое
Опять же - без свойства можно выкрутиться, просто методами. А то привыкли, понимаешь, свойства им подавай ;)
SPeller (2004-08-04 12:34:00) [5]Что, никто не может прокомментировать этот случай?
SPeller (2004-08-02 08:10:00) [6]Хех, похоже на замануху :) Если всё-же оставить только метод Get, то прочитать свойство невозможно. Ни один из вариантов не проходит:
SelEndPos; SelEndPos[]; SelEndPos[false];
Причем в первом случае требует квадратных скобок, во втором - expression expected, а в третьем - too many actual parameters!!!
:-))