On Wed, 21 Mar 2012, Hans-Peter Diettrich wrote:

I wonder about much code in the RTL/FCL, that depends on String type arguments, like:

 Procedure TStream.WriteAnsiString (const S : String);
 Var L : Longint;
 begin
   L:=Length(S);
   WriteBuffer (L,SizeOf(L));
   WriteBuffer (Pointer(S)^,L);
 end;

This method will work only as long as String=AnsiString, because Length *bytes* are written, not *chars* of a possibly different byte count.


Is the use of generic types, like String, really okay in the library code, when the concrete type matters?

No. This work still needs to be done.


The documentation on strings (3.2 Character types) is not really helpful, most entries look like they deserve an update reflecting the role of UnicodeString and the generic String type, and implicit string conversions. In detail I miss instructions on how to determine or specify the String type, with different FPC versions.

{$H} is documented, {$IFOPT} is documented.

That's all there is.

As soon as the rest is implemented, it will be documented as well.

Michael.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to