如何以及在何处覆盖默认字符串类型?

Ben*_*iss 3 delphi

我想直截了当地将默认string类型声明/覆盖为宽字符串或ansi字符串.

例如,string = WideString;在Delphi 2009下

如何以及在何处声明/设置/更改默认字符串类型,以便整个项目和IDE保证,它已被特别覆盖?

Dal*_*kar 10

声明/设置它的最佳位置在哪里,因此整个项目和IDE保证默认字符串是专门声明/覆盖的?

无处.string是Delphi中的关键字,无法重新声明.

Delphi关键字

在Unicode中,Delphi版本stringUnicodeString早期的别名AnsiString.

WideString提供与COM BSTR类型兼容,它不被引用计数string,AnsiStringUnicodeString

字符串类型


无论您使用哪种Delphi版本(pre-Unicode或Unicode)都使用泛型string类型.

但是在需要特定的地方,代码依赖于确切的类型使用,AnsiString或者UnicodeString即使它们可能映射到string特定Delphi版本的泛型.

  • AnsiString在Unicode之前的Delphi中使用,以确保版本之间的兼容性以及依赖于变量存在的代码中的代码正确性AnsiString

  • 使用UnicodeString以Unicode版本的德尔福未来证明你的代码时,代码的正确性取决于变量的存在UnicodeString

  • 不,它不是参考计数. (2认同)
  • `无论你使用哪种Delphi版本 - 只是挑剔,但在某些Delphi版本中,根据编译器选项字符串也可能是ShortString :-) (2认同)

Wos*_*osi 5

如果使用Delphi 2009或更高版本string定义为UnicodeString.在早期版本中,它被定义为AnsiString.

没有办法重新声明这种string类型.

  • @Abelisto,你确定吗?你指的是哪个Delphi版本? (3认同)
  • 停止!对不起,我发现了他 它是`Integer = string`,而不是`string = Integer`.因为`string`是关键字而``Integer`不是.因此,如果它存在于现代Delphi中,你根本无法重新声明`string`而不是某些宏. (3认同)
  • @DalijaPrasnikar你仍然可以使用`Integer = string;`;)取笑你的同事.玩得开心. (2认同)