3

我有一个 Delphi XE2 项目来处理大量计算。
在我的项目中,我总共有 1290 个Edit,340 个Label,330 个Panel,16 个TabSheet。对于每一个,Edit都有OnChange、和事件。OnDblClickOnEnterOnExit

我必须处理总共 1034 个Variable. 我刚刚设计Form并没有添加那些计算逻辑。现在我的.pas file变成62.5MB1815057 Lines.dfm file变成1.98 MB65540 Lines

我正在尝试使用Delphi XE2under编译项目Windows XP Professional SP3 32Bit,但出现错误**[DCC Fatal Error] Unit1.pas(1815058): F2046 Out of memory**

我也尝试使用Delphi XE5under编译它Windows 8 Enterprise 64Bit,这也是,我遇到了同样的问题。

我还没有使用 1034 个变量添加完整的计算逻辑,如果我添加它们,至少会添加4200 行.pas file到.

4

1 回答 1

16

你的整个方法是有缺陷的。编译器根本无法处理您提供的文件的大小。一个 180 万行的 pascal 源文件是荒谬的。2MB .dfm 文件是不切实际的。

看来您已将所有可能的选项编码为单独的控件和变量。您不是手动编写代码,而是使用 Excel 中的预处理步骤完成的。

解决方案不是在编译时扩展所有选项。解决方案是编写应用程序,以便它可以在运行时呈现不同的选项。因此,如果您有 30 个不同的变量,您可能已经创建了 30 个不同的标签控件和 30 个不同的编辑控件。正确的做法是创建一个标签和一个编辑控件。然后在运行时,根据用户的选项,更改标签的标题和编辑控件的内容。

不要为需要存储的每个可能值创建一个变量。使用数组和/或字典。

在高层次上,您需要采用 Excel 预处理步骤中包含的逻辑并将其转换为运行时 Delphi 代码。

于 2013-09-29T20:09:39.430 回答