More or less, yes, though note that there is a difference between "
reserved words" and what we might term "names" of types. Basically, the former cannot be redefined by the programmer, while the later can be more or less freely aliased to other types.
For example, you could do something like:
type
LongInt = Shortstring;
{ from here on, type LongInt is used as String[255] }
var
a: LongInt;
begin
a := 'Makes no sense whatever, does it?';
WriteLn(a);
end.
and the compiler will happily compile it and it'll run without a hitch. Note, though, that the same can not be done with
String, because "String" is in fact a reserved word, not just a type name.
In the case of
Integer, for example, its meaning depends on the mode (and target CPU): base modes (TP, FPC, ...) use the basic definition in
System:
while OOP modes (objfpc, delphi, etc) automatically include
ObjPas and so use that definition you found:
.
ETA: All this, of course, is a very basic explanation; there are some nuances which can be seen in the docs and the source code.