Я получаю каскадный набор ошибок "EClassNotFound" в моем проекте Delphi 2007. Кажется, не вызвано отсутствующим значением свойства Name, как это часто бывает, и хотя добавление RegisterClass (XXX) в раздел (-ы) инициализации исправляет имеющуюся ошибку EClassNotFound, другой, по-видимому, следует за ней бесконечно.
Я наконец-то взломал файл DFM в текстовом редакторе, и он, скорее всего, поврежден для меня (много не-ASCII-символов среди имен элементов формы и очень «неструктурированный» вид по сравнению с тем, что я привык видеть в файл DFM). (Я бы опубликовал то же самое здесь, но не уверен, что все в порядке, с не-ASCII, так что будет удерживаться).
Форма загружается нормально, и, кажется, тоже проверяет синтаксис и проверку синтаксиса, но как только я ее запускаю, возникают проблемы.
Возвращаясь к более ранним версиям этого в SVN, похоже, что он находился в этом состоянии в течение некоторого времени, что заставляет меня думать, что либо A) файл DFM не является моей проблемой, либо B) потоковая передача форм Delphi довольно отказоустойчивый / надежный (бонусный вопрос: что это?).
Если файл DFM является проблемой и поврежден, откат должен быть СПОСОБОМ отката, и это будет дорого. Учитывая, что IDE все еще может загрузить его, есть ли утилита, которая может очистить файл?
Или я полностью не в курсе, что DFM является основным подозреваемым?
Спасибо, ребята, за вклад. Забыл о бинарных / текстовых опциях с файлами DFM, так что это было полезно. Похоже, сам DFM не поврежден.
Хотя проблема с EClassError все еще существует. В связи с отсутствием значений свойств или ссылками на несуществующие свойства и т. д., возникает еще один вопрос: для какого класса дается ошибка (в настоящее время TnxSqlUpdateObject, но, вероятно, более ожидаемый, если опыт до сих пор не противоречит) всегда актуальный "виновник" класса / объекта?
Например, сейчас моя основная форма имеет четыре ссылки на TnxSqlUpdateObject, которые фактически отброшены в форме. Если я поместил RegisterClass (TnxSqlUpdateObject) в раздел инициализации, он нормально работает для этой ошибки EClassNotFound, но затем переходит к следующей (в данном случае TStringField).
В этом случае я переустановил компоненты NexusDB, а также создал новый проект с использованием некоторых компонентов, которые, как мне показалось, могут быть проблемой. Он компилируется и работает нормально, пока я не добавлю эту другую форму из моего реального проекта (который, к сожалению, ссылается на довольно много других).
ТАК, похоже, моя настоящая проблема в том, как методично диагностировать и исправлять любые ошибки EClassNotFound?