Node:Strings in BP and GPC, Next:Typed Constants, Previous:Objects, Up:Borland Pascal
Strings are "Schema types" in GNU Pascal which is something more
advanced than Borland-style strings. For variables, you cannot
specify just String as a type like in Borland Pascal; for
parameters and pointer types you can. There is no 255 characters
length limit. According to Extended Pascal, the maximum string
length must be in (parentheses); GNU Pascal accepts [brackets], too,
however, like BP.
For more about strings and schema types see Schema Types.
GPC supports Borland Pascal's string handling functions and some more (see String Operations):
| Borland Pascal | GNU Pascal
|
| Length | Length
|
| Pos | Pos, Index (1)
|
| Str | Str, WriteStr (1) (2)
|
| Val | Val, ReadStr (2)
|
| Copy | Copy, SubStr, MyStr[2 .. 7] (3)
|
| Insert | Insert
|
| Delete | Delete
|
| MyStr[0] := #7 | SetLength (MyStr, 7)
|
| =, <>, <, <=, >, >= | =, <>, <, <=, >, >= (4)
|
| EQ, NE, LT, LE, GT, GE
| |
| n/a | Trim
|
Notes:
(1) The order of parameters of the Extended Pascal routines
(Index, WriteStr) is different from the Borland Pascal
routines.
(2) ReadStr and WriteStr allow an arbitrary number of
arguments, and the arguments are not limited to numbers.
WriteStr also allows comfortable formatting like
WriteLn does, e.g.
WriteStr (Dest, Foo : 20, Bar, 1/3 : 10 : 2).
(3) SubStr reports a runtime error if the requested substring
does not fit in the given string, Copy does not (like in BP).
(4) By default, the string operators behave like in BP. However, if
you use the option --no-exact-compare-strings or
--extended-pascal, they ignore differences of trailing
blanks, so, e.g., 'foo' and 'foo ' are considered
equal. The corresponding functions (EQ, ...) always do
exact comparisons.