According to Bernhard Tschirren:
WriteLn('*',Text,'*'); { Prints out with padded #0 }
I think we agree that this is correct. (On Linux, the #0s don't appear on the screen ... I suspect the operating system (or the "terminal") "eats" them.)
WriteLn('*',Trim(Text),'*'); { Also prints out with padded #0 }
ISO 10206 says - in a way I have problems to think of a more cryptic one - that the thing which is stripped from the String is "the character space". This implies that there must be exactly one "space" - #32.
Or did I overlook something?
WriteLn('*',Asciiz2Str(Text),'*'); { Segment Violation }
This is not correct, but it's an unrecognized problem in the source: A String without specified length cannot be returned as the result of a function. BP assumes 255 in this situation which is quite natural because it's BP's maximum size for Strings, but GPC does *not* assume 4G in this case ... but zero. :-(
In my current development version, GPC warns about the problem and assumes 255 (like BP), but I do not recommend to rely on this. Better always specify a length for Strings to be returned by functions: "Type String255 = String ( 255 ); Function Foo: String255;". (Or even better: avoid to return Strings as function results at all; use "Var Foo: String" instead which *is* valid.)
Bye (Im having trouble coming up with unique greetings :-)
Me too, ;-)
Peter
Dipl.-Phys. Peter Gerwinski, Essen, Germany, free physicist and programmer peter.gerwinski@uni-essen.de - http://home.pages.de/~peter.gerwinski/ [970201] maintainer GNU Pascal [970510] - http://home.pages.de/~gnu-pascal/ [970125]