我用Delphi 7编写的程序编译好了,但是当我运行它时它会给我错误信息:
Project1.Exe引发异常类EReadError,消息'属性持久性不存在'。流程已停止。
这只是在我安装TMS Component Pack以用于此项目之后才开始。谢谢你的帮助。
答案 0 :(得分:7)
DFM示例:
SomeComponent1 = TSomeComponent
OtherProperty = OtherValue
Persistence = True
AnotherProperty = AnotherValue
end
你也可以使用由Andreas Hausladen设计的伟大的DFMCheck 1.4工具。检查任何其他遗失的财产:
http://andy.jgknet.de/blog/?page_id=177
这很可能是由编译过的&安装的软件包与实际的.pas文件不同步。如果您有源代码,那么重建软件包可能会修复它。
答案 1 :(得分:0)
设置断点(F5)并逐步执行程序(F7 / F8)。获取获得该异常的位置,然后向我们提供有关它的更多信息(显示一些代码)。
答案 2 :(得分:0)
此错误意味着它正在尝试从DFM资源加载某些内容(通常是表单),并且它为其创建的组件所没有的属性提供了值。
如果只在您开始使用TMS组件时发生,解决方案很简单:不要使用它们。尽可能多地向作者发送有关错误和项目的信息,看看他们是否能找到解决问题的方法。在那之前,使用别的东西。
答案 3 :(得分:0)
如果您正在使用文本DFM(右键单击表单,请选中“文本DFM”,保存),您可以使用“搜索”|“在文件中查找”查找DFM文件中的所有Persistence实例。只需将搜索字符串设置为“Persistence”(我通常告诉它忽略大小写),将文件掩码设置为“* .dfm”,然后选中“项目中的所有文件”复选框。
如果您尚未使用文本DFM并且不想手动打开所有表单并选中该框然后重新保存它们,则可以使用CONVERT.EXE(在($ DELPHI)\ Bin文件夹中)进行转换他们是集体的。从任何命令提示符运行没有参数的CONVERT以查看选项。默认情况下,CONVERT会将.DFM保存为.txt,但您可以使用-i开关将其保存(使用文本.DFM重写二进制文件.DFM)。 (我通常先将.DFM备份到另一个文件夹,然后转换它们。如果没有报告错误,我可以稍后删除备份的.DFM。)
答案 4 :(得分:0)
升级到新版本时,我遇到了与TMS类似的问题:
如果您认为某个特定组件导致了问题, 删除它,在没有它的情况下编译项目,再将它放在表单/框架上。
如果这对您不起作用:
为了解决问题你需要做的事情,所以你可以使用Designer和新属性,因为那是你真正想要的,不是吗? :-):
干杯! 我希望它适用于遇到类似问题的每个人:)
答案 5 :(得分:0)
我和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;