Once 64-bit application allocates enough RAM that 32-bit addresses aren't enough, 64-bit addresses will be used.
There are places in DOA source code, where 32-bit addresses are assumed - in other words, pointers are cut in half.
Meanwhile in Data.DB:
procedure DataEvent(Event: TDataEvent; Info: NativeInt);
I pinpointed other places, but I think you should investigate on your own.