Delphi Ansistrings

时间:2011-02-24 10:42:44

标签: delphi delphi-2010 delphi-7 ansistring

我有一个案例,我将从Delphi 7迁移到delphi 2011 XE,令我惊讶的是,由于ansistrings,许多组件会出现问题,在delphi中它们看起来像日文/中文字符,现在是单位我使用的是PCSC连接器,似乎已停止/放弃原始开发人员。

基本上我想要的是一种简单的方法来再次阅读字符串,尽可能少修改原始代码..

如果有关于如何为2009年准备好macse组件ansistring的任何好的教程,那么更新也会帮助我

2 个答案:

答案 0 :(得分:9)

@Plastkort,Delphi> = 2009完全能够读取和处理AnsiString。如果你以某种方式将ANSI数据强制转换为Unicode,可能会通过强制转换指向PChar的指针来获得无意义的字符。

如果我必须将其他人的代码转换为Unicode,我首先会搜索PChar,Char和String,并专门查看其他类型难以转换为这些类型的地方。那是因为那些类型改变了意义:在非Unicode delphi中,CHAR是1个字节,现在它是2个字节。

转换本身并不困难,您只需要了解您所面临的问题,并且需要很好地理解您要转换的代码。这需要做很多工作,尤其是在处理“带字符串的智能事物”的代码时。

答案 1 :(得分:1)

Delphi中的重大变化(我认为在Delphi 2009之前)是别名字符串类型;字符串,字符,PChar等,2009年的prios是ANSI字符串类型现在都是WideChar类型。

所以

Type   | Delphi 6,7 | Delphi 2009, XE
-------+------------+----------------
string | AnsiString | UnicodeString
char   | AnsiChar   | WideChar
pchar  | PAnsiChar  | PWideChar

从Ansi Delphi迁移到Unicode Delphi的最简单方法是全局搜索并替换使用显式8位ANSI等效项替换它们的别名字符串类型(即用AnsiString替换所有字符串,用PAnsiChar替换PChar等等。 。)

这应该让你90%的方式。


<强>更新 在阅读了我的回答和the article referenced by @O.D的评论之后  我认为咬紧牙关和使用Unicode的建议是更明智的选择。