I have two almost identical programs, but one of them I cannot compile with Win64, but it works fine with Win32.
I finally figured out that the difference between the two that seemed to make a difference was the working one had constants defined, the one with issues, those constants were changed to variables. I've managed to reduce it down to the offending line and made some test programs that demonstrate the issue: This program runs fine with both Win32 and Win64: Const BYA=5; SYA=10; Var LY:word; Begin LY:=Round(30-(BYA+SYA)); End. This program will only compile with Win32. With Win 64 I get: testit.pas(7,5) Error: Can't determine which overloaded function to call. Var LY:word; BYA,SYA:Byte; Begin BYA:=5; SYA:=10; LY:=Round(30-(BYA+SYA)); //This is the line producing the error, but why? End. I'm very confused by this. It's very clear what to do, and as far as I know, valid syntax. If I use LY:=Round(30-BYA-SYA); Then it is compiled by both Win32 and Win64 fine. But this is not what I always want to do, I have reasons to want it (30-(BYA+SYA)) the original formula was very long, I reduced it down to this one thing that causes the problem, I really need to be able to group things the way I want to group them. Strangely: LY:=Round(30.1-(BYA+SYA)); Also compiles fine with both Win32 and Win64 I am compiling 32bit version with: fpc testit.pas And compilng 64bit verion with: fpc -Px86_64 testit.pas Any ideas about this? James
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal