Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TStrings и не понятное исключение


Страницы:   1 2 3

Дядя ©   (2007-09-09 11:15:00) 

Добрый день!
Проблема возникла. Мне неоходимо создать экзэмпляр класса TStrings. Использую при этом метод Create. Но при использовании программы, когда приходит время потрудится моему экзэмпляру, появляется исключение. Не пойму в чём дело.
Отрывки кода:
File List: TStrings;
****
FileList:=TStrings.Create;
FileList.LoadFromFile(***);
****


DrPass   (2007-09-09 19:40:00) [21]


> Anatoly Podgoretsky ©   (09.09.07 19:37) [22]

Так TStrings ведь самостоятельно без наследования работать не может


> Ну и что, если у самого законодателя такие ляпы являются
> нормой

Законодатель появится, если язык будет стандартизован. А в данном случае законодательствовать некому


{RASkov}   (2007-09-09 19:40:00) [22]

> Но любой класс, от которого наследуются является базовым
> для наследуемого.

Тогда они все базовые.... кроме самых "последних" :)


Инс   (2007-09-09 19:39:00) [23]


> [21] Вася Правильный   (09.09.07 19:37)

Открыл нам глаза :)


> [22] Anatoly Podgoretsky ©   (09.09.07 19:37)

Каждый останется при своем :)


Anatoly Podgoretsky   (2007-09-09 19:38:00) [24]

> Вася Правильный  (09.09.2007 19:37:21)  [21]

О чем и речь и в чем нам отказывают некоторые.
А вот абстрактный класс в принципе создать нельзя, он просто не существует в природе, это всего лишь шаблон.


Anatoly Podgoretsky   (2007-09-09 19:37:00) [25]

> Инс  (09.09.2007 19:34:20)  [20]

Не обязан, но тогда это законченый класс и его уже не совсем правомерно так называть, поскольку он может полность работать самостоятельно без наследования.
Но любой класс, от которого наследуются является базовым для наследуемого.


Вася Правильный   (2007-09-09 19:37:00) [26]

экземпляры таких классов создавать можно, только нельзя вызывать абстрактные методы, которые не реализованы


Инс   (2007-09-09 19:34:00) [27]

Просто это вопрос терминологии. Базовый класс не обязательно должен содержать абстрактные методы. Как же тогда назвать класс с абстрактными методами? Так уж повелось, что в терминологии Delphi они называются абстрактными. И я по прежнему считаю, что нет в этом никакой ошибки.


Anatoly Podgoretsky   (2007-09-09 19:31:00) [28]

> Инс  (09.09.2007 19:28:17)  [17]

А что мне то объяснять, если TeamB все объяснили, а это Люди.


Anatoly Podgoretsky   (2007-09-09 19:31:00) [29]

> Инс  (09.09.2007 19:28:17)  [17]

Ну и что, если у самого законодателя такие ляпы являются нормой.


Инс   (2007-09-09 19:28:00) [30]


> [14] Anatoly Podgoretsky ©   (09.09.07 19:22)

Все знакомые мне источники, называют такие классы именно абстрактными. Хотя бы даже вот этот:
http://rsdn.ru/article/Delphi/delphiabs.xml
Ведь серьезное издание, RSDN Magazine. А тут попался такой глупый автор, да и редакторы проморгали. Нету на них Анатолия, объяснил бы ;)


Anatoly Podgoretsky   (2007-09-09 19:27:00) [31]

procedure DoSomething; virtual; abstract;
вот когда будет объявление
x = class(any); abstract;
вот тогда и можно будет говорить, это абстрактный класс.


DrPass   (2007-09-09 19:23:00) [32]


> Anatoly Podgoretsky ©   (09.09.07 19:13) [12]

В Delphi нет полностью абстрактных классов, какие есть в некоторых других языках. И нет ничего страшного, что в терминологии языка Dephi "абстрактный класс" относится к классу, содержащему абстрактные методы. Разработчики к этому привыкли и этим успешно пользуются. И впервые слышу, что кто-то там из-за этого должен оправдываться.
Тем более, что создавать экземпляры классов с абстрактными методами, хоть и можно, но крайне нежелательно, это является признаком некачественного кода


Anatoly Podgoretsky   (2007-09-09 19:22:00) [33]

> Инс  (09.09.2007 19:20:13)  [13]

Получается, если не брать в расчет старшии версии, но там я внимательно не смотрел.
Правильный термин Базовый класс


Инс   (2007-09-09 19:20:00) [34]


> [12] Anatoly Podgoretsky ©   (09.09.07 19:13)

Это вопрос терминологии. Кстати, по такой терминологии получается, что в Delphi вообще нет абстрактных классов.


Anatoly Podgoretsky   (2007-09-09 19:13:00) [35]

> DrPass  (09.09.2007 19:07:11)  [11]

Тебе перевести, что здесь написано.
Абстрактный класс это когда нет реализации, а только одно объявление, который нельзя создать, а надо делать обязательного наследника с реализацией. Что то в этом роде появилось в последних версиях Дельфи.
В конференциях Борланда, Borland Team было вынуждено постоянно оправдываться и дезавуировать этот неудачный термин в справке. Это такой же термин, как термин база по отношению к таблицам.


DrPass   (2007-09-09 19:07:00) [36]


> Это не абстрактный класс, а базовый, поэтому его правомерно
> создавать

Из справки:
TStrings contains abstract or, in C++ terminology, pure virtual methods and should not be directly instantiated.
т.е. самый что ни на есть абстрактный :)


Инс   (2007-09-09 19:02:00) [37]


> Это не абстрактный класс, а базовый, поэтому его правомерно
> создавать.

Как это не абстрактный? А какой тогда абстрактный, если не этот?


Anatoly Podgoretsky   (2007-09-09 12:30:00) [38]

> DrPass  (09.09.2007 11:27:05)  [5]

На человека?
На партизана, а это не человек.


Anatoly Podgoretsky   (2007-09-09 12:29:00) [39]

> Дядя  (09.09.2007 11:15:00)  [0]

Самое интересное затихарил.


Anatoly Podgoretsky   (2007-09-09 12:29:00) [40]

> Инс  (09.09.2007 11:24:01)  [1]

Это не абстрактный класс, а базовый, поэтому его правомерно создавать.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо