在Delphi中到底是什么System.String?

时间:2019-02-01 09:55:58

标签: delphi delphi-10-seattle

我维护了一些相当古老的Delphi代码,该代码在特定单元中使用EmptyString

编译器将其解析为

  

costant EmptyString =''-来自System.string

现在我的硬盘或.dcu中没有System.string.pas文件,所以我对此一无所知。

我在

中找到
C:\Program Files (x86)\Embarcadero\Studio\17.0\source\rtl\sys\system.SysUtils.pas

另一个相似的常量:

{ Empty string and null string pointer. These constants are provided for
  backwards compatibility only.  }

  EmptyStr: string = '';
{$IFNDEF NEXTGEN}
  NullStr: PString = @EmptyStr;

乍看之下,似乎EmptyStrEmptyString仅在过去使用过,所以它们被不赞成使用,因此最好直接使用''或定义常量在重新定义它们的应用程序中。

现在,在升级第三方组件之后,我意识到EmptyString不再得到解决。

我的问题是: System.String到底是什么?为什么rtl中没有相应的.pas文件?

我用谷歌搜索没有成功。

谢谢。

1 个答案:

答案 0 :(得分:7)

System.StringString单元中正式定义的类型System

string类型实际上是System.UnicodeString类型的别名。该文档说它定义为:

type String = UnicodeString;

依次UnicodeString的文档中说:

type UnicodeString = { built-in type };

没有Pascal代码来定义类型,因为它是内置内在类型。即使您无法在该单元的Pascal源代码中看到它们的声明,也可以将所有内置类型正式视为在System单元中声明。