![]() |
| | |||||||
| Регистрация | Правила | Блоги | Пользователи | Социальные группы | Поиск | Сообщения за день | Все разделы прочитаны |
| |
![]() |
| |
| | #1 | ||||||
| DedBoroda Джедай Регистрация: 04.11.2010 Адрес: Москва
Сообщений: 378 Репутация: 74 (74) |
Всем доброго времени суток. Помогите, пожалуйста, решить одну проблему. У меня есть класс TMyClass и куча различных потомков TMyClass1, TMyClass2,...,TMyClassN. У TMyClass есть поле objtype:TMyType ( TMyType = (class1,class2,...,classN) ). У потомков есть поля-массивы с различной размерностью но одинаковым именем(Props). У меня есть указатель на неизвестный экземпляр класса, один из выше упомянутых. Как можно получить досуп к полю-массиву с нужной размерностью без использования case objtype? Абстрактное решение:
У кого есть мысли? | ||||||
| | |||||||
| Другие темы раздела | |
| Delphi Написание программы редактора Доброе время суток пользователи форума, мне нужна помощь в написание программы (редактора) файла, структуры файла у меня есть, сам я еще плохо разбираюсь в delphi если у кого есть время помогите пожалуйста, связаться со мной можно *** или скайп *** .ink, если желающих не найдётся, то переноси.... Написание программы редактора | Написать прогу используя запись и масивы Delphi Написать прогу в которую сначало нужно будет ввести данные: ФИО, пол, год рождения, оклад. И чтобы можно было осуществлять поиск сотрудников по однаму пораметру,например ФИО.. Написать прогу используя запись и масивы |
| | #11 | |
| DedBoroda Джедай Регистрация: 04.11.2010 Адрес: Москва
Сообщений: 378 Репутация: 74 (74) |
Продолжу немного сабж ООП Есть ли в дельфи возможность перекрыть виртуальный метод, но не описывать его в потомке? Код метода один, но он работает с динамическими данными каждого потомка по разному. Есть ли вариант не копипастить этот метод по всем потомкам? | |
| | ||
| | #12 | |
| Mawrat Модератор Регистрация: 19.09.2009 Адрес: г. Самара
Сообщений: 5,104 Репутация: 7196 (3078) |
Предположим, мы имеем базовый абстрактный класс. В этом классе есть абстрактный метод. И мы хотим создать несколько классов потомков, в которых реализация этого метода одинаковая. В этом случае можно поступить так - создаём потомка от базового класса (этот потомок тоже может быть абстрактным). И в этом потомке реализуем интересующий метод. А потом все другие классы наследуем от этого потомка.
| |
| | ||
| | #13 | ||||||
| DedBoroda Джедай Регистрация: 04.11.2010 Адрес: Москва
Сообщений: 378 Репутация: 74 (74) | Понятно, сейчас попробую и отпишусь Добавлено через 10 минут Не получилось. Или я неправильно Вас понял:
| ||||||
| | |||||||
| | #14 | |
| Mawrat Модератор Регистрация: 19.09.2009 Адрес: г. Самара
Сообщений: 5,104 Репутация: 7196 (3078) | DedBoroda, когда в потомке объявляется новое поле, одноимённое с каким-то другим полем, объявленном в предках этого класса, то, на самом деле, прежнее поле не пропадает. И все методы которые к нему обращались, так и продолжают работать именно со старым полем. ![]() Поэтому, чтобы эту проблему решить, надо доступ к нужному полю организовать через метод. И если в потомках надо брать данные уже из другого поля, то просто надо перекрыть этот метод и прописать там, собственно, чтение из нового поля. | |
| | ||
| | #15 | |
| DedBoroda Джедай Регистрация: 04.11.2010 Адрес: Москва
Сообщений: 378 Репутация: 74 (74) | | |
| | ||
| После регистрации реклама в сообщениях будет скрыта | |
| | #16 | ||||||
| Mawrat Модератор Регистрация: 19.09.2009 Адрес: г. Самара
Сообщений: 5,104 Репутация: 7196 (3078) |
В общем, реализовать можно так:
При этом, класс TC2 унаследует от класса TC1 метод myproc(). И этот метод не придётся переписывать - он также будет работать со свойством Text, но это свойство у него даёт доступ к другим данным, нежели в классе TC1. | ||||||
| | |||||||
![]() |
| Похожие темы | |
| Тема | Автор |
| Delphi для начинающих Найти окно, зная часть имени его класса Привет всем! Как найти Handle дочерное окно зная его имя('stop , please stop , don't leave'); а класс нет , класс и имя родительское окна неизвестны! Заранее спасибо! Добавлено через 7 часов 47 минут nu , kto pomojet? | MultiVan |
| C# .NET Как создать объект по имени класса? У меня имеется переменная в которой хранится имя класса, как мне по этой переменной создать объект этого класса? (конечно без использования if и case). | riksking |
| Java Получение значения атрибута класса по его имени Здравствуйте. Допустим у меня есть объект: Object MyObj; И допустим я точно знаю что значение объекта - элемент одного из трех классов. Также точно известно, что каждый из этих трех классов обязательно имеет три атрибута: int pole1, pole2, pole3; | Novichok_80 |
| .NET Получение Класса по имени Как получить класс имея его имя в переменной? ухитрился найти такое Dim s = Activator.CreateInstanceFrom('путь.dll', 'класс') думал, мож объявить его надо: Dim s = new Activator.... а,не получается. дает ошибку только public sub New срабатывает в нем. | dnv |
| Базы данных Перехват имени класса Как перехватить имя класса апликухи в Windows? Например при запуске моей программы, нужно убить все открытые до этого Excel`ы.Говорят что под С++ есть инструмент позволяющий это сделать, а как перехватить из под VB? Я делал так, запускал Excel , с помощью WinApi перехватывал имя окна и пробовал... | Nexus_6 |
| Опции темы | |
| |
| |