Making Delphi 64 Bit/Large Address Aware

In the 18+ years Delphi has been out, some rather large applications having been built.  Between the number of units developers are using, the size of the component sets installed in the IDE and the transition to the Galileo IDE with .NET subsystems, Delphi now requires more memory than ever.  What is interesting is that Delphi is still a 32 bit IDE even after release of the 64 bit compiler.  In the old days when Delphi was built using the Object Pascal compiler, one would have thought a 64 bit version would be forthcoming shortly after the compiler was available.

I would venture that most developers run a 64 bit version of Windows natively or in a VM for development so it begs the question as to why a 64 bit version of Delphi is not at least available.  Apple’s testing showed compiling their desktop software for 64 bit provided for about a 20% speed gain.  Pretty impressive for just a re-compile.

In addition to a performance benefit, 64 bit apps of course have access to more memory.  Considering the Out of Memory issues perhaps the additional memory would have at least delayed failure of the IDE.  Even more interesting is the fact that the current bds.exe is not Large Address Aware.

Delphi is not Large Address Aware

Delphi is not Large Address Aware

This could have been enabled by simply adding the {$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE} to the project.

If you are experiencing Out of Memory issues you could of course use a utility like PE Viewer to make the EXE large address aware, but then you would get directed here the next time you launch Delphi because the copy protection code would prevent it from launching.

Isn’t it about time that EMBT supported 64 bit OS/X apps, and a 64 bit version of Delphi or at least made Delphi Large Address Aware?

8 Responses to “Making Delphi 64 Bit/Large Address Aware”

  1. Steve Faleiro Says:

    Its probably because of all the COM stuff under the hood. It would take a heck of an effort and then some to get it successfully converted over to 64-bit.

  2. IL Says:

    Yep, if bds.exe could use 3.7GB of memory on 64bit Vista+ computer that would be nice.
    Btw, thank you for reminding of
    option. That might be useful for DataSnap REST 32bit server.
    Are you aware of any gotchas using full 32bit pointers?

  3. Stefan Says:

    I would prefer them to fix their memory leaks ;)

  4. Yanniel Says:

    The intent is good, but it might not be as simple as that. Enabling Large Address Aware in a system having less than 3GB of physical memory might slow down other applications.

  5. Nikolai Davydik Says:

    Fully support this! Have no idea why Embarcadero ignore this flag as a simple workaround for massive Out of Memory problems many people (including ourselfs) experiencing with large projects.

  6. Larry Hengen Says:


    I cannot see this causing a real problem. Look at the cost of Delphi and then look at the cost of RAM. Most developers have between 8 and 16Gb in their machines in my experience.

  7. Larry Hengen Says:


    LMAO…..yes in a perfect world..

  8. Larry Hengen Says:


    The most common 32 to 64 bit migration issue with pointers I have seen is using the Tag (or some other similar property) to store a pointer to an object and casting it as an integer. The case has to be changed to NativeInt. EBMT wrote a migration whitepaper for 64 migration, you might want to consult.

Leave a Reply