I'll mark this one as resolved straight away as I have the solution but I thought it was worth logging in case someone else experiences the same error.

My program compiles and runs well on 64bit Windows 7 in the IDE and as a compiled binary, the same binary works on other 64bit windows systems, no errors. However, on a 32bit Windows it falls over immediately with an "Unexpected Error", no other code. It runs well in the IDE and generates no errors, all functions as it should.

However, there was a message that popped up during loading the IDE that told me there were errors in my form load and to look in the .log file. I often ignore these as I use third party controls that sometimes cause such an error when migrating to other systems. The second run of the program in the IDE normally resolves these when it has found the 3rd party component.

So, I failed to look in that .log file initially, when I eventually did, I saw there was an error related to a dragicon property that I had set earlier, when testing dragging and dropping within the program. I had subsequently disabled drag and drop for these objects but the dragicon property had never been unset/reset. Of course it was an icon set to a slightly higher resolution.

It was this icon that was causing the "Unexpected Error" for 32bit Windows.

The sad thing is that previously, some months ago, I had encountered errors when assigning an icon to a form - so as to appear top left on each form. If I chose an icon that had just slightly higher resolution than normal then it caused the same failure when running on 32bit Windows though it worked on 64bit systems perfectly. So, I knew about this issue but didn't put 2+ 2 together and didn't make the connection to the drag/drop I had been recently testing.

That's it. A lesson to be less trusting of my own code/methods, I should tidy up after my testing and read the logs and not assume I know what's in them.

Hopefully this will be helpful to someone one day.