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

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

Работа с DLL. Метод Assign не хочет выполняться.. :(


Страницы:   1 2

Гас ©   (2002-07-16 10:01:00) 

Вот в первый раз решил поработать с DLL, все классно получалось, пока не попробовал сделать FFont.Assign(DLLReturnsFont).
Не хочет выполняться!
Пишет "Cannot assign TFont to a TFont".
В чем дело, кто-нибудь знает? Спасибо.


Skier   (2002-07-16 12:04:00) [21]

>Гас

> Но пока не знаю как все-таки передать свойства фонта из
> DLL

Тебе обязательно нужен именно такой подход ?


Гас   (2002-07-16 11:58:00) [22]

Спасибо за внимание, я тут покопал немножко и уже понял, что не так все просто. Но пока не знаю как все-таки передать свойства фонта из DLL. Да и вообще, как передавать объекты?..


Игорь Шевченко   (2002-07-16 10:57:00) [23]

Font в DLL и Font в EXE имеют разные адреса RTTI, поэтому оператор Is не сработает.


Eugene Lachinov   (2002-07-16 10:42:00) [24]

Тут наверно, надо разбираться с реализацией Source is TFont :-), и вообще is


reonid   (2002-07-16 10:40:00) [25]

Assign обычно работает через RTTI -
проверяет Source с помощью is/as.
А класс TFont в основном приложении и в DLL - разные классы,
(хотя и идентичные).

Поэтому обычно классы из DLL не экспортируют.


Digitman   (2002-07-16 10:33:00) [26]


procedure TPersistent.Assign(Source: TPersistent);
begin
if Source <> nil then Source.AssignTo(Self) else AssignError(nil);
end;

procedure TPersistent.AssignError(Source: TPersistent);
var
SourceName: string;
begin
if Source <> nil then
SourceName := Source.ClassName else
SourceName := "nil";
raise EConvertError.CreateResFmt(@SAssignError, [SourceName, ClassName]);
end;

Отсюда очевидно, что DLLReturnsFont у тебя по какой-то причине равен nil


Страницы:   1 2

Наверх

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