Подтвердить что ты не робот

Зарезервированные слова и идентификаторы Delphi

Объявление переменных в Delphi привело меня к рассмотрению вещи, которую я не могу понять.

Возникает вопрос: объявляя строки, можно заметить, что string является зарезервированным словом, а при объявлении других типов данных, например целых чисел, классификатор типа данных не является зарезервированным словом, а идентификатором (т.е. Integer, столица, о которой я рассказываю).

Фактически, Delphi позволяет перейти к определению Integer, которое, как вы обнаружите, содержится в системном блоке, но оно является только представительным, потому что есть комментарий, в котором утверждается, что некоторые константы (например, True), идентификаторы (например, Integer), функции и процедуры непосредственно встроены в компилятор.

Я не могу понять причины этого выбора.

Может ли кто-нибудь помочь?


Небольшое объяснение разницы между типами string и Integer. Следующий код

type
  Integer = Char;

var
  I: Integer;

begin
  I:= 'A';
  ShowMessage(I);
end;

является правильным и работает как ожидалось, а следующая строка

type
  string = Integer;

дает ошибку времени компиляции.

4b9b3361

Ответ 1

Насколько я знаю, string является зарезервированным словом с времен Turbo Pascal. Поэтому причина держать его таким образом должна быть совместима.

Pascal → Turbo Pascal → Object Pascal → Delphi.

Проверьте эти ресурсы.

Ответ 2

string должно быть зарезервированным словом, поскольку оно не используется исключительно для обозначения типа System.[Ansi|Unicode]String. Если string был простым псевдонимом для некоторого внутреннего типа компилятора, то string[20] больше не работал. Это не проблема для Integer, потому что Integer всегда означает не что иное, как "тип System.Integer".