Что такое System.String именно в Delphi? - PullRequest
0 голосов
/ 01 февраля 2019

Я поддерживаю довольно старый код Delphi, который в определенном модуле использует EmptyString.

Компилятор разрешает его как

costant EmptyString = '' - из System.string

теперь у меня нет файла System.string.pas на моем жестком диске или .dcu, поэтому я не могу больше об этом знать.

Я нашел в

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?

Я безуспешно гуглил.

Спасибо.

1 Ответ

0 голосов
/ 01 февраля 2019

System.String - это тип String, официально определенный в единице System.

Тип stringфактически является псевдонимом типа System.UnicodeString.В документации сказано, что она определена как:

type String = UnicodeString;

В свою очередь документация для UnicodeString говорит:

type UnicodeString = { built-in type };

Естьнет кода Pascal для определения типа, поскольку это встроенный тип или встроенный .Все встроенные типы официально считаются объявленными в модуле System, даже если вы не видите их объявлений в исходном коде Pascal для этого модуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...