Deplhi 5中的编译器指令SETPEFlags

时间:2016-09-16 19:16:17

标签: delphi delphi-5

我有一个使用Delphi 5.0构建的应用程序,工作正常,没有任何问题。但是当运行大型报表时,我的应用程序需要超过2 Gb的内存。做分析后发现,使用Compiler指令SETPEFlags我们可以将32位应用程序内存增加到4 GB。

我正在尝试在Delphi 5.0中设置我的程序但是收到错误"无效的编译器指令"。有人可以建议任何解决方法,而无需重建其他版本的应用程序。或者那些被添加到Delphi的版本?

提前致谢。

1 个答案:

答案 0 :(得分:6)

您无法使用Delphi 5中的工具将您的应用程序标记为大地址识别(在Delphi 6中添加了{$SetPEFlags})。您需要将该PE标志添加为后期构建设置。设置该标志的常用方法是使用Microsoft的editbin工具。

执行此操作后,只要分配超出2GB边界的内存,程序就会停止工作。这是因为默认的Borland内存管理器不支持大地址。您需要将其替换为FastMM或其他支持LAA的内存管理器。或者,如果您愿意,可以使用HeapAlloc()编写自己的替换内存管理器。