![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Доброе время суток всем.
У меня такая проблема: есть необходимость выделить каждый метод класса в отдельный файл. Пытался связать их, как обычные модули с помощью uses - не помогло, возможно что-то не так сделал. Этот метод не понимает, что он относится к какому-то классу и компилятор ругается на точку, которая стоит после имени его класса. Внимание, вопрос: как быть? |
#2
|
|||
|
|||
![]() К сожалению, в Дельфи такого понятия, как partial class, нет.
Варианта 3: 1. Через наследование и/или интерфейсы. 2. Через директиву включения {$I file.pas} 3. Забить на это и сделать просто набор процедур и функций, а для их объединения можно просто использовать свой клас контекста, в котором хранить все промежуточные данные. |
#3
|
|||
|
|||
![]() Разумеется третий вариант самый эффективный, но, к сожалению, таково задание.
Через наследование тоже нельзя, тк метод должен пренадлежать конкретному классу, а не его потомку, к дерективе, думаю, преподаватель тоже придерется. Через интерфейсы я пробовал, но ничего не получается, может я что-то не так делаю? Можете хотя бы кратко описать как это должно выглядеть? |
#4
|
||||
|
||||
![]() Может выложишь полный текст задания, а то у меня подозрение.
Может быть речь идет просто о директиве {$I file.pas} ? - вариант 2 Пример: В файле "FormCreate.inc" пишем Код:
Код:
|
#5
|
|||
|
|||
![]() Ну, допустим, вот один из юнитов программы (в каждом юните свой класс). Это такой контейнер, он умеет считывать и выдавать информацию.
Здесь три метода, как вы видите. нужно, чтобы в этом юните по сути осталось только описание класса, а описания методов должны быть в отдельных файлах. Дерективой я пользоваться умею. Может кто-нибудь знает другие способы реализации? Код:
|
#6
|
||||
|
||||
![]() Так вот этого
Цитата:
И почему написано "в отдельных файлах", а не модулях ? По существу директива инклуде это и делает. Если же цель например скрыть реализацию от потребителей ( т.е. передаете библиотеку с описаниями а реализация скрыта в dcu ), можно типа такого сделать Код:
Или посмотри в сторону obj файлов и директивы {$LINK filename}. Только не уверен что так методы можно выносить, знаю только про функции. |