2016-09-16 73 views
3

我有一個應用程序是使用Delphi 5.0構建的,工作正常,沒有任何問題。但是,當運行大型報告時,我的應用程序需要超過2Gb的內存。經過分析發現,使用編譯指令SETPEFlags我們可以將32位應用程序內存增加到4 GB。編譯指示SETPEFlags在Deplhi 5

我想在我的程序在Delphi 5.0中設置,但得到錯誤「無效的編譯指令」。有人可以提出任何解決方法,而無需在其他版本中重新構建應用程序。或者那些被添加到Delphi的版本?

在此先感謝。

回答

6

您不能在Delphi 5中獲得工具來將您的應用程序標記爲Large Address Aware(在Delphi 6中添加了{$SetPEFlags})。您需要將該PE標誌添加爲後期構建設置。設置該標誌的常用方法是使用Microsoft的editbin工具。

一旦你這樣做了,你的程序會在你分配超出2GB邊界的內存時立即停止工作。這是因爲默認的Borland內存管理器不支持大地址。您需要用FastMM或其他支持LAA的內存管理器來替換它。或者,如果您願意,您可以使用例如HeapAlloc()編寫自己的替換內存管理器。

+0

多數民衆贊成酷。非常感謝大衛。使用editbin設置標誌並使用FastMM進行內存管理並按預期工作。 – Nalu