Что вызывает ошибку 1309 после редактирования и сохранения библиотеки классов?

У меня есть библиотека классов в Visual FoxPro (файл .vcx). После того, как я отредактирую код, содержащийся в нем, а затем запущу свое приложение, я получаю сообщение об ошибке 1309 «[имя библиотеки классов] не является объектным файлом».

Это происходит после создания экземпляра класса и происходит в тот момент, когда класс в .vcx вызывает метод внутри себя. Так что в этот момент это действительно объект, потому что строка кода, вызывающая ошибку, содержится в библиотеке классов.

Я заметил, что всякий раз, когда я редактирую и сохраняю .vcx, если я открываю .vcx как таблицу, я вижу, что есть две удаленные строки, относящиеся к классу, который генерирует ошибку. Если я упаковываю .vcx и запускаю программу, я не получаю никаких ошибок. Точно так же, если я COMPILE CLASSLIB [имя библиотеки классов], я не получаю ошибки.


person Community    schedule 12.04.2013    source источник


Ответы (2)


Возможно ли, что VCX поврежден? Можете ли вы попробовать сделать «Сохранить как» и снова протестировать VCX?

person Jerry    schedule 12.04.2013
comment
Параметр меню «Сохранить как...» отображается серым цветом в VFP, когда я пытаюсь получить к нему доступ для самого .vcx и любых содержащихся в нем классов. Я также пробовал это с другими .vcx с тем же результатом. - person ; 12.04.2013
comment
VCX — это просто DBC со специальным расширением. Вы можете использовать его, а затем использовать COPY TO, чтобы сделать копию. Вероятно, вам придется изменить расширения скопированных файлов. - person Tamar E. Granor; 13.04.2013
comment
@Tamar Спасибо, я только что попробовал открыть как .dbf, а затем КОПИРОВАТЬ. После редактирования и сохранения, затем запуска приложения получаю ту же ошибку 1309. - person ; 15.04.2013

вы можете попробовать перекомпилировать библиотеку классов. В библиотеке классов есть столбец для кода (в виде необработанного текста) и еще один столбец для кода OBJECT COMPILED в другом. Это МОЖЕТ быть так же просто, как

класс компиляции (yourClassLibrary)

Это перестроит для вас столбец objcode для всех записей в classlib.

Если .vct (памятная часть .fpt) файла повреждена, вы окажетесь в более сложном положении при возможном восстановлении.

person DRapp    schedule 12.04.2013
comment
К сожалению, мой текущий обходной путь заключается в КОМПИЛИРОВАНИИ CLASSLIB [myClassLibrary] каждый раз, когда я редактирую и сохраняю. Если я этого не сделаю, то я получаю ошибку. - person ; 15.04.2013
comment
@wilbishardis, как вы делаете редактирование ... вы делаете это непосредственно из .vcx или через IDE. Вы подключены к какой-то программе контроля исходного кода? - person DRapp; 15.04.2013
comment
Я работаю через IDE. .vcx является частью проекта, поэтому на вкладке «Классы» в проекте я разворачиваю .vcx и дважды щелкаю класс, чтобы отредактировать его. Кроме того, если я редактирую класс через Tools/Class Browser в VFP, я также получаю ту же проблему. - person ; 15.04.2013