Зарезервированные слова и идентификаторы 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;

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

2 ответов


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

Pascal - > Turbo Pascal - > Объект Pascal - > Delphi.

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


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