Quote Originally Posted by arthurprs
why they don't created compiler option for the new strings?...
Because they couldn't do that without including two copies of the RTL and VCL, one Unicode-based and the other ANSI-string-based. String manipulation is used all over the place, even in the System unit that provides the most basic functionality and is included as a "hidden" USES include in every unit in your project.

Quote Originally Posted by DarkBow
Quote Originally Posted by masonwheeler
Backwards compatibility is completely broken and everything with char-size handling in it has to be redone now.
as far as I know (can't test because I don't have D2009) that's not entirely true. While you may need to change your code, some have suggested to try and simply change any String that you need to behave as before to AnsiString type.
I wrote that based on my experience with trying to get my game engine up and running in D2009. The compiler choked when it hit PascalScript. (For those that don't know, PascalScript is a system that allows your program to run scripts written in Object Pascal, making customization and scripting very simple.) It uses chars and strings all over the place. I tried redefining all strings as AnsiStrings, which solved some of the problems, but there are places where it calls RTL string-related functions, all of which are defined in Unicode. That was about where things started to get more complicated than I could understand without an in-depth study of the inner workings of PascalScript, so I wrote up a report of what was going on, sent it to Carlo Kok (the guy who wrote PS and maintains it,) and basically dumped the problem in his lap.

Other non-trivial projects are going to have similar problems. The Object Pascal pngimage library is now broken because it uses chars and Pchars for single-byte manipulations. (There's a new PByte type to replace the old PChars, but some of the things Pngimage uses PChars for won't work with PBytes, and you have to go through and correct those ones individually or it won't compile.) D2009 supposedly has PNG support built in somewhere, but I couldn't find it.

In short, the Unicode thing is a backwards-compatibility nightmare. But aside from that, D2009 looks like a wonderful system, and it'll be great for creating brand new projects on. It just can't handle your old ones until you've ported them to Unicode.