如何在Delphi xe2中禁用unicode

And*_*y k 11 delphi delphi-xe2

有没有办法做到这一点 ?

我目前正在使用2007而且我正在寻求升级,但是试图让这个新版本做任何事情都非常令人沮丧.

xe2中char,strings和Pchar的新行为几乎杀死了我尝试过的每个应用程序和第三方组件.

是否有编译器选项可以提供D2007兼容性.?

War*_* P 5

如果Delphi 2009/2010/XE/XE2(unicode版本)有一个"Ansi开关",你只需交换现有的问题,就会出现更糟糕的问题.

因此,不能有转换.这个想法经过仔细讨论,我碰巧从与做出决定的人的第一手对话中得知,并且没有尽职调查就没有决定破解你的代码.根本没有别的办法.为了使Delphi成为真正的Unicode,别名String = UnicodeString是必不可少的.

因此,你必须改变你所有的String报关单AnsiString,并CharAnsiChar如果你希望拥有单字节非Unicode字符和字符串类型在应用程序代码.在大多数代码中,在大多数地方,这都不是必需的.但是,如果您明确需要字节大小处理,例如RS232和RS485上的二进制协议,或二进制文件格式(EDA等),则需要更改代码.

如果您不想自己移植代码,请付费给某人.我自己移植了一个庞大的科学组件和应用程序库,我花了几周的时间来测试并发现所有的错误.之后,我有了一个合理的现代代码库,自2009年升级以来没有再次破坏.

当你进入XE/XE2分界时,你可能会遇到一些更多的痛苦,这与你的代码假设指针类型与Integer或Cardinal的大小相同,这在Win64中已不再适用.同样,德尔福人不想破坏你的代码,他们只是遵循理智的工程实践,在这种情况下,Win64决定某些事情.

为什么他们没有将每个VCL控件属性更改为USTRING而不是String?为什么他们不使每个RTL功能同时采用USTRING和STRING并提供过载?

因为规范的Delphi开发现在纯粹是Unicode.USTRING是,并且将是一个特例.String是本机(规范)字符串类型,实际上它现在也称为UnicodeString.

碰巧你已经在使用类型别名了.delphi 1.0中的字符串长度限制为255个字符.当他们引入Delphi 2.0和内部调用的长字符串类型时AnsiString,他们将现有的常见类型String别名为String=AnsiString.当我们使用Unicode时,每个VCL组件和每个采用字符串的VCL方法仍然需要一个字符串.但是现在是String String=UnicodeString.

WideString例如,Delphi 7已经有了.我们不需要中途移动到unicode.无论您是否意识到整个软件开发世界现在都希望字符串类型是unicode.德尔福是全球现象的一部分.互联网是unicode.您的Windows 7操作系统是纯本机unicode.