如何解决Delphi内存不足错误?

如何解决Delphi内存不足错误?,delphi,Delphi,我有一个Delphi XE2项目来处理大量计算。 在我的项目中,我总共有1290个编辑,340个标签,330个面板,16个选项卡。对于每个Edit,都有OnChange、ondblick、OnEnter和OnExit事件 我必须处理总共1034个变量。我刚刚设计了表单,没有添加那些计算逻辑。现在,我的.pas文件变为62.5MB具有1815057行,而.dfm文件变为1.98MB具有65540行 我试图在Windows XP Professional SP3 32Bit下使用Delphi XE2

我有一个Delphi XE2项目来处理大量计算。
在我的项目中,我总共有1290个
编辑
,340个
标签
,330个
面板
,16个
选项卡
。对于每个
Edit
,都有
OnChange
ondblick
OnEnter
OnExit
事件

我必须处理总共1034个
变量
。我刚刚设计了
表单
,没有添加那些计算逻辑。现在,我的
.pas文件
变为
62.5MB
具有1815057行,而
.dfm文件
变为
1.98MB
具有65540行

我试图在
Windows XP Professional SP3 32Bit
下使用
Delphi XE2
编译该项目,但我得到的错误是
**[DCC致命错误]Unit1.pas(1815058):F2046内存不足**

我还尝试在
windows8enterprise64bit
下使用
delphixe5
来编译它,我也遇到了同样的问题


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

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

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

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

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


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

那么,您期望的是什么呢。您有一个包含180万行代码的源文件。你需要学习如何抽象事物。不要在.dfm文件中创建1200个编辑控件。在运行时创建它们。仅在显示选项卡工作表时创建它们。对所有编辑使用单个
OnChange
事件处理程序。在
发送器
参数上切换行为。您需要学习如何抽象行为,而不是手工编写每个选项。想象一下当你想改变某些东西时会发生什么。你的代码很臭。:-)一个具有1.8M LOC的单元是完全错误的,拥有1290个编辑控件也是错误的-用户无法看到它们,因此它们不需要一直存在。你需要认真反思你的设计。在您真正使代码易于管理之前,没有任何东西可以修复您的错误。我祝你好运,因为你需要它。:-)@User261209:您使用Excel作为代码生成器?我不确定是被迷住了还是被吓坏了@梅森:这肯定比使用画笔作为代码生成器要好。人们使用Excel的目的很有趣。的确,这是一个真正的创意。