Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
alolya
Зарегистрирован: 04.12.2007 Сообщения: 3
|
Добавлено: Вт Дек 04 2007 00:23 Заголовок сообщения: Интерфейс для передачи класса в dll |
|
|
добрый день. Суть проблемы такова. В книжке нашел пример:
procedure IsFont (O:TObject);
begin
if O is TFont then
ShowMessage ('Font')
else ShowMessage ('Not Font');
end;
Когда данный пример в главной форме то все работает корректно, но стоит его поместить в dll и добавить в ней строчку:
exports IsFont name 'IsFont';
потом вызвать функцию из главного модуля, так перестает работать. В книжке написано, что так и должно быть и спасение нужно искать в интерфейсах.
Может что-то не так делаю, но создал в той же dll класс и описал в нем интерфейс, в котором и вышеупомянутую функцию + ее реализация в классе. и сделал экспорт функции, которая создает этот класс, чтобы из главного модуля можно было юзать интерфейс. снова вызываю из главной формы указатель_на_класс_в_dll. IsFont (Tfont) , и всё равно не работает. |
|
Вернуться к началу |
|
|
alolya
Зарегистрирован: 04.12.2007 Сообщения: 3
|
Добавлено: Вт Дек 04 2007 23:58 Заголовок сообщения: |
|
|
В других форумах посоветовали поюзать bpl. пока не работал с ними, но попробую поэкспериментировать. В продолжение развития темы, вопрос, что описано в нижних строчках:
В первых двух строчках вообще не понятно что это, а в третьей не пойму где реализован интерфейс, как я уяснил, интерфейс это всего лишь методы, которые потом реализуются в классах. Класс вижу , вижу интерфейс, а реализации его (интерфейса) методов нет. Или он реализован где-то, и программа сама потом найдет в каком подключенном модуле он реализован и в каком классе?
спасибо.
type
TMethodDataSetOpen = procedure of object;
TFetchRowEvent = procedure(cRowsObtained: UInt) of object;
TSequentialStreamAdapter = class(TStreamAdapter, ISequentialStream)
end; |
|
Вернуться к началу |
|
|
|