Here is my advice.
- First of all port the application to 32 bit Unicode.
- Then, port to 64 bit.
I would expect step 1 to be harder than step 2. For step 1 there is Marco Cantù's Unicode whitepaper. I'm not aware of anything similar yet for 64 bit. I strongly urge you to keep these two porting tasks separate. Smaller independent tasks are always easier than one bigger combined task.
Regarding the 64 bit port I can think of the following issues to deal with:
- All 3rd party libraries need updating.
- All inline assembler will need attention.
- Access to Windows API functions need looking at. A common idion is to pass
Integer(MyObject)
. That needs to be replaced with NativeInt(MyObject)
.
Other than that I don't think there is much to be concerned about. The Unicode port is likely to be far more problematic.
Barry Kelly's answer here puts some more flesh on this.