Delphi: EReadError с сообщением «Постоянство свойств не существует» - PullRequest
3 голосов
/ 28 апреля 2009

Моя программа, написанная на Delphi 7, компилируется нормально, но когда я ее запускаю, выдается сообщение об ошибке:

Project1.Exe поднял класс исключения EReadError с сообщением «Постоянство свойства не существует». Процесс остановлен.

Это началось только после того, как я установил TMS Component Pack для использования с этим проектом. Спасибо за любую помощь.

Ответы [ 6 ]

7 голосов
/ 28 апреля 2009
  1. Открыть форму в Delphi IDE
  2. Используйте Alt + F12 для редактирования источника .DFM
  3. Поиск свойства "Постоянство"
  4. Удалить строку со свойством "Постоянство"

Пример DFM:

SomeComponent1 = TSomeComponent
  OtherProperty = OtherValue
  Persistence = True
  AnotherProperty = AnotherValue
end

Также вы можете использовать замечательный инструмент DFMCheck 1.4, автор Andreas Hausladen. Чтобы проверить любое другое отсутствующее свойство, подобное этому:

http://andy.jgknet.de/blog/?page_id=177

Это, скорее всего, вызвано тем, что скомпилированный и установленный пакет не синхронизирован с фактическим PAS-файлом. Если у вас есть исходный код, то пересборка пакетов, вероятно, исправит это.

0 голосов
/ 28 марта 2016

У меня была похожая проблема с NuiGui Delphi Framework, Чтобы решить эту проблему, создайте включаемый файл с некоторыми свойствами и используйте его в своем классе.

/// include class 'Basic.inc'
private
   function GetWidth: Integer;

published
   property ClientHeight : Integer Read FHeight Write FHeight;
 //property ClientWidth  : Integer Read FWidth Write FWidth;
 //property OldCreateOrder : Boolean Read FOldCreateOrder Write FOldCreateOrder;
 end;
...

/// main class like this
TuMemoFrame = class(TUniFrame)
  UniMemo1: TUniMemo;
  UniMemo2: TUniMemo;
  UniButton1: TUniButton;
  procedure UniButton1Click(Sender: TObject);
private
public

{$Include Basic.inc } // <---
end;
0 голосов
/ 11 октября 2009

У меня была похожая проблема с TMS при обновлении до новой версии:

Если вы считаете, что какой-то конкретный компонент вызывает проблему, удалите его, скомпилируйте проект без него, снова поместите его в форму / фрейм.

Если это не работает для вас:

Что нужно сделать, чтобы решить проблему, чтобы вы могли использовать Designer и новые свойства, потому что это то, что вы действительно хотите, не так ли? :-):

  • Удалить TMS Component Pack (или что вы используете)
  • Переустановите пакет компонентов TMS
  • Сборка и установка пакетов
  • Добавление соответствующих файлов TMS .lib в вашего проекта приложения (я использую C ++ Builder)
  • Добавьте соответствующие файлы TMS .pas в вашего прикладного проекта . Например, у меня была проблема с компонентом TAdvSmoothCalendar, поэтому я добавил AdvSmoothCalender.pas в свой проект.

Ура! Я надеюсь, что это работает для всех с подобной проблемой:)

0 голосов
/ 30 апреля 2009

Если вы используете текстовые DFM (щелкните правой кнопкой мыши на форме, выберите «Текстовый DFM», сохраните), вы можете использовать Поиск | Найти в файлах, чтобы найти все экземпляры сохраняемости в ваших файлах DFM. Просто установите строку поиска на «Постоянство» (я обычно говорю, чтобы она игнорировала регистр), маску файла на «* .dfm» и установите флажок «Все файлы в проекте».

Если вы еще не используете текстовые DFM и не хотите вручную открывать все формы, ставить флажки и затем сохранять их, вы можете использовать CONVERT.EXE (в папке ($ DELPHI) \ Bin) для преобразования их в массовом порядке. Запустите CONVERT без параметров из командной строки, чтобы увидеть параметры. По умолчанию CONVERT сохраняет .DFM как .txt, но вы можете заставить его работать на месте (переписывая двоичный файл .DFM в виде текста .DFM), используя ключ -i. (Обычно я сначала копирую файлы .DFM в другую папку, а затем преобразую их. Если об ошибках не сообщается, я могу позже удалить резервные копии файлов .DFM.)

0 голосов
/ 28 апреля 2009

Эта ошибка означает, что он пытается загрузить что-то (обычно форму) из ресурса DFM и обнаруживает значение свойства, которого у создаваемого им компонента нет.

Если это произошло только тогда, когда вы начали использовать компоненты TMS, решение простое: не используйте их. Отправьте авторам как можно больше информации об ошибке и проекте, вызвавшем ее, и посмотрите, смогут ли они найти способ ее исправить. До тех пор, используйте что-то еще.

0 голосов
/ 28 апреля 2009

Установите точку останова (F5) и перейдите в программу (F7 / F8). Получите место, где вы получите это исключение, а затем дайте нам больше информации о нем (покажите некоторый код).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...