Node:String type, Next:Qualified identifiers, Up:BP Incompatibilities
GPC's internal string format (Extended Pascal string schema) is different from BP's. BP compatible short strings will be implemented in GPC soon, but in the meantime, you'll have to live with the difference. In general, GPC's format has many advantages (no length limit of 255 characters, constant and reference parameters always know about their capacity, etc.), but you will see differences if you:
String without a capacity. However, GPC
will assume 255 then (like BP) and only warn about it (and not even
this when using --borland-pascal, see below), so that's not a
real problem. The "clean" way, however, is to declare
String [255] when you mean so (but perhaps you'll prefer
String (2000)? :-).
Length to get the
length, and SetLength to modify it.
FillChar a string, e.g.
FillChar (StringVar, 256, 0);, which would overwrite the
Capacity field. Using
FillChar (StringVar[1], ...); is alright since it
accesses the characters of the string, not the Capacity and
Length fields. If you want to set the length to zero, use
SetLength (see above) or simply assign an empty string
(StringVar := ''). This is more efficient than clearing all
the characters, anyway, and has the same effect for all normal
purposes.
Text files are no problem). You will have to rewrite the
code. If you also want to get rid of the 255 character limit and
handle endianness issues (see below) in one go, you can use the
ReadStringLittleEndian etc. routines
(see Run Time System), but if you need BP compatible strings
(i.e., with a one-byte length field) in data files, you cannot use
them (but you can easily modify them for this purpose).