[fpc-devel] UnicodeChar and Locale variables don't work

Graeme Geldenhuys graemeg.lists at gmail.com
Thu Nov 20 15:39:30 CET 2008


How am I supposed to handle unicode characters for locale variables?
All locale variables like ThousandSeparator is type Char and there is
no overloaded UnicodeChar versions.  This causes problems in Russian
locales as the example below shows.

  c := UnicodeChar($00A0);  // non-breaking space character
  ThousandSeparator := c;

  s := Format('%10.2n', [123456789.123456]);
  writeln('Russian style No-break Space char  s = ', s);

  writeln('SizeOf(UnicodeChar) = ', SizeOf(c));
  writeln('SizeOf(ThousandSeparator) = ', SizeOf(ThousandSeparator));

And the output is as follows:

Russian style No-break Space char  s = 123�456�789.12
SizeOf(UnicodeChar) = 2
SizeOf(ThousandSeparator) = 1

The ThousandSeparater variable is not big enough to store the
character.  Plus, what's going to happen with > BMP characters?

  - Graeme -

fpGUI - a cross-platform Free Pascal GUI toolkit

More information about the fpc-devel mailing list