![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| DelphianOracle |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 20.5.2007 Репутация: нет Всего: нет |
Доброго всем времени суток!
У меня возникла проблема. Нужен что-нить типа класса, в котором помимо полей и свойств будут методы, уникальные для каждого экземпляра. Т. е. набор методов одинаковый, а содержание меняется... Хранить такие экземпляры надо в файлах. В принципе, можно распараллелить - поля отдельно, и сэтим проблем не возникнет, а вот как быть с методами... Надеюсь на вашу помошь |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
код методов в разных файлах и связывание в рантайм?
-------------------- Обижено школьников: 8 |
|||
|
||||
| lukas |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 23.2.2007 Репутация: 3 Всего: 15 |
дастиш фантастишь.... -------------------- http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Совсем несложно на самом деле. Если методы не виртуальные. Создается класс с кучей переменных типа Function .... of Object и правильными параметрами. В конструкторе грузиться Dllка и ее функции присваиваются переменным типа Function .... of Object. Можно даже механизм какой-нить придумать для получения списка методов. Например, одна из функций Dll вернет номер первой функции такого класса и общее число. Ну и написать общего предка таких классов, который будет автоматом линковать все нужные методы. Намного сложнее если будут виртуальные методы. Но если честно задача попахивает нерациональностью. Намного проще иметь класс реализованный в Dll и Интерфейс этого класса в программе. Одна из функций Dll просто должна возвращать интерфейс созданного экземпляра класса. Ну например как это сделано в делфийской оболочке GDI+. Dll на ваще на C++ писанная, но поверх нее создается мини класс оболочка, которая предоставляет доступ ко всем возможностям. Если Dll написанна на делфях, то такого даже не нужно. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Felan |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 284 Регистрация: 2.8.2007 Где: Самара Репутация: 2 Всего: 7 |
DelphianOracle,
В простонародьи это называется - полиморфизм. Прочитай про наследование и виртуальные/динамические методы, и будет тебе счастье ЗЫЖ И еще хорошо бы про интерфейсы прочитать. -------------------- // Любая сложная система - это темный лес. Каждый в этом лесу протаптывает свои тропинки, по ним и бегает. Лишь изредка, сходя с них, мы находим много интересного, а порою и страшного. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Не еще, а в первую очередь, потому что при работе с Dll в делфях нельзя экспортировать классы, потому переданный объект будет объектом неизвестного класса, а с интерфейсом все просто, его можно объявить как в экзешнике так и Dll и это будет один и тот же интерфейс. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| DelphianOracle |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 20.5.2007 Репутация: нет Всего: нет |
Плизз, киньте пару ссылок...
А то все эти виртуальные, динамические методы, интерфейсы, DLL для меня почти что китайская грамота... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| DelphianOracle |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 20.5.2007 Репутация: нет Всего: нет |
Alexeis, Спасибо, книга отличная, разобрался
Если вопросы еще будут, я задам, а пока тему можно закрывать. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |