1

我正在将一个 delphi 7 应用程序迁移到 delphi XE4。在 Delphi 7 中,一些变量是这样声明的:

var abc : string[80];

在迁移此代码时,我将上面的代码声明更改为

var abc : string;

据我了解,string[80] 是 ansistring,string 是 unicode。那么,这是正确的做法吗?

我正在关注stackoverflow的以下链接:

将 Char 转换为 AnsiChar 或 WideChar (Delphi)

4

1 回答 1

4

确实你是对的:

  • string[#]是 的亚型ShortString
    它最多有 255 个字符(取决于 #),并且编码是未确定的(即由您决定)。
  • string是一个常规字符串,在 Delphi 2007 之前是单字节(现在称为),在 Delphi 2009之前是AnsiString多字节(现在称为)。 在 Delphi 2007 之前,编码是未确定的。从 Delphi 2009 开始,两者都可以有编码。UnicodeString
    AnsiStringUnicodeString

更多背景信息可以在这两个 Delphi 文档主题中找到:

回答您应该如何更换的问题ShortString

这完全取决于您ShortString在 Delphi 7 中的使用方式。根据使用情况,有多种方法:

  • string
  • 数组byte
  • AnsiString

这一切都取决于您存储的数据类型,因此这是您需要找出的第一件事。

于 2013-09-10T08:52:14.053 回答