如何解决Delphi Out of Memory错误?

时间:2013-09-29 19:49:55

标签: delphi

我正在使用一个Delphi XE2项目来处理大量计算 在我的项目中,我总共拥有1290个Edit个数,340个Label个数,330个Panel个数,16个TabSheet个数。对于每个Edit,都有OnChangeOnDblClickOnEnterOnExit个事件。

我必须处理总共1034个Variable的数字。我刚刚设计了Form而没有添加那些计算逻辑。现在我的.pas file变为62.5MB 1815057行.dfm file变为1.98 MB 65540行

我正在尝试使用Delphi XE2下的Windows XP Professional SP3 32Bit来编译项目,但我收到的错误为**[DCC Fatal Error] Unit1.pas(1815058): F2046 Out of memory**

我还试图在Delphi XE5下使用Windows 8 Enterprise 64Bit进行编译,此处也是,我遇到了同样的问题。

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

1 个答案:

答案 0 :(得分:14)

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

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

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

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

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