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

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

Смена типа на ходу [D6]


Страницы:   1 2

zorik ©   (2009-02-04 12:25:00) 

Имеется TMyList = class(TObjectList) и элементы в нем типа TMyItem. Также есть типы TMyItem1 = class(TMyItem) и TMyItem2 = class(TMyItem).

Нужно считать данные из файла "общий список" и заполнить ими TMyList. Потом считать данные из "параметры списка 1", найти в TMyList соответствующий елемент и как-то "изменить ему тип" из TMyItem на TMyItem1, чтоб присвоить доп. свойста которых нет в TMyItem. Тоже надо сделать с файлом "параметры списка 2". Те елементы которые не будут ни в "параметры списка 1" ни "параметры списка 2", но считаются с "общий список" надо добавить в лог и удалить.

Пока приходит в голову:
1. создать временный список для считывания общего списка, а потом его перприсвоивать
2. добавлять в TMyList елементы TMyItem. При считывании "параметры списка 1"создавать TMyItem1, переприсвоить ему значения TMyItem, потом удалять из списка TMyItem и вставлять TMyItem1.


clickmaker   (2009-02-04 13:39:00) [21]

> [12] zorik ©   (04.02.09 13:06)

ну так это и есть в соответствии с ООП
в чем тогда проблема?


Dimka Maslov   (2009-02-04 13:24:00) [22]

классы должны иметь виртуальный метод который и вызывается при обработке списка. Вот и будет "в соответствии с правилами ООП"


Сергей М.   (2009-02-04 13:17:00) [23]


> 3. Данные о добыче - например, вариантный тип


Тут можно и объектный тип использовать


Сергей М.   (2009-02-04 13:15:00) [24]

Чем не походит вот такая схема:

Объект "Некая скважина"

Свойства:

1. Координаты скважины
2. Тип скважины - (ХренЗнаетКакая, Нефтяная, Газовая, Нефтегазовая)
3. Данные о добыче - например, вариантный тип

Методы:

1. Рисовать (реализация ветвится в зависимости от свойства "Тип скважины")

?


zorik   (2009-02-04 13:06:00) [25]


> Сергей М. ©   (04.02.09 13:02) [10]


Общий список - список скважин с координатами

"Скважина" - найменование, координаты

"Нефтяная скважина" - походит от скважина + дополнительные параметры: добыча нефти, воды, газа

"Газовая скважина" - походит от скважина + дополнительные параметры: добыча газа, конденсата

Для "скважина" есть виртуальный метод "рисовать", реализация которого в нефтяной и газовой


Сергей М.   (2009-02-04 13:02:00) [26]


> zorik ©   (04.02.09 12:53) [6]


"Общий список" - это что, объекты-скважины ?


zorik   (2009-02-04 13:02:00) [27]

тоже как вариант


Медвежонок Пятачок   (2009-02-04 12:58:00) [28]

по делу отвечать пока нечего. ибо придумано уродливое чудище, и спрашивается как его причесать покрасивее.

зы если с файлами все так плохо, я все равно не стал бы их грузить на лету в свои списки-структуры.
предварительная обработка и приведение к своему виду, удобному для программы.


Плохиш   (2009-02-04 12:55:00) [29]

isможет помочь нефтяным магнатам :-))


zorik   (2009-02-04 12:54:00) [30]


> Медвежонок Пятачок ©   (04.02.09 12:52) [5]

а по делу ответить? )))


zorik   (2009-02-04 12:53:00) [31]


> Медвежонок Пятачок ©   (04.02.09 12:49) [3]


Файлы не я формирую. Файл с координатами заполняет юзер вручную, а файли с добычей -- стандартные, нам их присылают предприятия


Медвежонок Пятачок   (2009-02-04 12:52:00) [32]

Доигрались.
У нефтяных магнатов нет бабок на программста


zorik   (2009-02-04 12:50:00) [33]

почему?

Реальная задача. Есть карта. Есть список скважин, которые надо нарисовать. В екселевском файле "список скважин для карты такойто" есть список: название скважины, координаты х, у. Еще есть файлы "параметры нефтяных скважин" и "параметры газовых скважин". В этих файлах для всех нефтяных скважин есть информация про: название скважины, добыча нефти, добыча воды, добыча газа; для всех газовых: название скважины, добыча газ, добыча конденсата. Так вот, надо пройтись по всех скважинах которые есть на карте, и в зависимости от того нефтяная или газовая нарисовать кружочки с секторами чего и сколько добыто )))

Неужели такого не было никогда. Что имеется список с елементами общего типа, а потом эти елементи нужно конкретизировать к конкретному типу, походному от общего?

Для конкретно этой задачи можно выкрутится обычным списком, но хочется чтоб красиво, в соответствии с правилами ООП


Медвежонок Пятачок   (2009-02-04 12:49:00) [34]

походу у него список в котором экземпляры трех классов.

три процедуры.
одна идет по всем элементам и сохраняет свойства базового класса.
вторая идет по списку и сохраняет свойства наследника1 в отдельный файл
ну и третья, которая делает тоже самое со вторым наследником.

теперь пишется "собиратель-восстанавливатель" этого добра из трех файлов.


Сергей М.   (2009-02-04 12:41:00) [35]

Задача формализована "на пальцах", оттого и маета)


> zorik


Ты бы привел пример - содержимое этих 3-х файлов ..


Медвежонок Пятачок   (2009-02-04 12:32:00) [36]

маета и бессмыслица какая-то


Страницы:   1 2

Наверх

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