Member
Статус: Не в сети Регистрация: 18.01.2004 Фото: 0
Значит так, джентельмены:
1. Использовать классы делфи, инициализированные в основном приложении, в делфиевской DLL можно только в случае
компиляции приложения и DLL с run-time пакетами. Иначе DLL просто не понимает что TForm, например, из основного приложения это
тоже самое что и TForm в DLL, потому как у разные указатели на описатель класса в RTTI.
2. Смешивать распределение и уничтожение блоков памяти в основном приложении и DLL, а также передавать строки (string) можно
при наличии общего менеджера памяти, который включается с использованием юнита ShareMem.
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
_Alex_ Ничем в принципе , но лучше юзать первый вариант. По идее 1 вариант для классов, а второй для простого приведения типов. В такм к примеру виде dword(a)
Member
Статус: Не в сети Регистрация: 18.01.2004 Фото: 0
_Alex_ В первом варианте происходит проверка является ли N классом TNumericNode или его потомком. Если нет то возникает
exception. Во втором варианте проверки нет и если N не TNumericNode или его потомок, то последствия непредсказуемы -
в большинстве случаев будет общая ошибка защиты.
Member
Статус: Не в сети Регистрация: 15.04.2004 Откуда: Москва
_Alex_ Ты винмательно почитай как работают as и is.
Тебе же черным по белому написано, что если as не может привести к требуемому типу (а может или нет она вытягивает из RTTI), то генерит ик-сепшн, в отличии от Цешного dynamic_cast, а Тип() приводит к типу наплевав на RTTI, и шмякнутся ты сожешь позже.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения