1

我有一个程序,它使用 quickreports 5 生成一些报告。该程序始终在一台特定的 PC 上编译。现在我想在其他机器上开发程序,我对快速报告有很大的问题。

尽管我在新机器上安装了相同版本的 quickreports (5.0.2),但我无法让程序在它们上运行。一旦我在新机器上打开带有快速报告的表单,我就会收到错误消息:

读取 FrmMyReport.PreviewLeft 时出错:属性 PreviewLeft 不存在。...

我可以编译程序,但是一旦我使用带有快速报告的表单,我就会得到这个异常:

Project MyProject.exe 引发异常类 EReadError,并带有消息“Property PreviewLeft 不存在”。

当我在这里休息时,它会停下来TCustomQuickRep.Create。调试后似乎发生在TCustomQuickRep.SetBandValuesLine if assigned(FPage) and assigned(FBandList) and

我还尝试了手动安装软件包,使用编译 - 安装,将所有可能的目录添加到库路径中。没有任何效果。我看不出工作正常的旧机器和新机器之间的区别。

我希望有人可以帮助我解决这个问题。能够在新机器上开发此应用程序非常重要。谢谢你的帮助。

4

2 回答 2

1

您确定新旧机器安装了相同版本的 QuickReport 吗?因为错误消息通常发生在您在 DFM 中使用比您使用的版本更新的版本创建的组件描述时,即

  • 组件的版本 x 引入了新属性PreviewLeft
  • 您正在使用版本 x 进行开发,该属性已保存到 DFM 中;
  • 您使用没有属性的组件版本 x-1 编译/打开项目,并且流系统引发异常,因为它在旧版本的组件中找不到属性。

新版本也有可能删除(过时的)属性,但在这种情况下,组件供应商通常会注意在流式传输期间默默地忽略该属性,因此不会引发异常。所以我怀疑您实际上在新机器上安装了旧版本的 QuickReport。我自己不使用 QuickReport,所以我不知道何时PreviewLeft引入该属性以及需要什么...如果它是预览窗口的左坐标,那么我会说忽略它并清理它是无害的从 DFM 中提取出来 - 困难的方法是在 IDE 中逐一打开报告并在错误 dlg 中按“忽略”,简单的方法是使用一些工具,即我相信Jedi可能有这样的工具。

更新 Jedi 工具称为 DFMcleaner,它jvcl\devtools\DFMCleaner位于我的 Delphi 5 安装目录中。

于 2011-09-06T10:45:21.177 回答
0

我遇到过入侵/扩展第 3 方库以添加/更正某些功能的情况。然后我搬到一台新电脑(或从供应商处下载更新)并丢失我的新属性。像这样的犯规之间通常是几个月或几年,所以我通常会浪费半天的时间来追踪它,然后就是“D'OH!Deja-vu all over again”。我有一个组件,我实际上在其中添加了一个名为

property ThisLibraryWontCompileUntilItsBeenHackedByChris : boolean;

当编译器停止时,我知道去哪里找。

克里斯

于 2011-09-06T13:51:09.587 回答