Почему возникает в Delphi EX5 проблема с "invalid class typecast"?
Пишу давно программу. Все работало отлично, пока вдруг в один прекрасный момент (а это спустя пару месяцев) программа начала агриться на неправильное присвоение типа. ПОЧЕМУ? Я НИЧЕГО НЕ ТРОГАЛ!
Значит суть следующая: у меня есть exe и dll. Exe загружает dll и в этом dll создается динамический массив типом TComponentList. В этот компонент я запихиваю динамически созданные компоненты разных типов (tedit, tpanel, tbutton, tspeenbutton…. И т. д. в определенной последовательности). Среди этих компонентов есть компонент с типом tcheckbox. И если ранее программа говорила мне, что все ок, то сейчас спустя пару месяцев вдруг она так больше не считает.
Чтобы убедиться в том, что я правильно указываю индекс элемента массива, в котором хранится нужный мне компонент, я использовал условие с оператором is… и это условие проходило проверку. Я для себя использовал вывод сообщения через showmessage(……ClassType.ClassName), чтобы убедиться в том, что правильно ссылаюсь на элемент массива. В итогде все ок, но на выходе все равно получаю сообщение "invalid class typecast". Что за…
>Я НИЧЕГО НЕ ТРОГАЛ!
Так не бывает. Что-то ты "потрогал", просто не придал значения. Например, построил свой dll как debug а exe - как release - соответственно, они были построены из разных модулей и внутренняя структура объектов отличается. is работает по RTTI-заголовку, а динамическое приведение типов уже не срабатывает.
Другой возможный момент - твоя библиотека и твоя программа почему-то грузят разные borlndmm.dll или неподходящую версию оного.