我维护了一些相当古老的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;
乍看之下,似乎EmptyStr
和EmptyString
仅在过去使用过,所以它们被不赞成使用,因此最好直接使用''
或定义常量在重新定义它们的应用程序中。
现在,在升级第三方组件之后,我意识到EmptyString
不再得到解决。
我的问题是:
System.String
到底是什么?为什么rtl中没有相应的.pas文件?
我用谷歌搜索没有成功。
谢谢。
答案 0 :(得分:7)
System.String
是String
单元中正式定义的类型System
。
string
类型实际上是System.UnicodeString
类型的别名。该文档说它定义为:
type String = UnicodeString;
依次UnicodeString
的文档中说:
type UnicodeString = { built-in type };
没有Pascal代码来定义类型,因为它是内置或内在类型。即使您无法在该单元的Pascal源代码中看到它们的声明,也可以将所有内置类型正式视为在System
单元中声明。