In my application I have used a backslash as part of a text-based activity indicator (a typical /-\ sequence.. I removed the | because it had a different width). All was well until I saw my application being run on a japanese computer. The backslash was replaced with a japanese character.
¿Cómo puedo evitar esto?
preguntado el 01 de febrero de 12 a las 22:02
You can use .oOo as a sequence. period, small o, capital O, small o.
that should work under any language.
In your delphi application you can select a Font that renders that Unicode codepoint as a backslash. However, most standard fonts including many in Windows, will intentionally show a Yen mark instead of a backslash, in Japanese locales, for reason that users expect it.
If you want to be really sure of what is shown, use your own font, one that is not shipped with windows, and install it with your application.
You just have to live with this. Editing things like shell scripts on a Japanese computer just looks weird, but you get used to it. Especially if your app is running remotely through an SSH session or something, you cannot possibly have control over what fonts are going to be used to render it.
Your best bet is probably to use fancier characters, like ╱─╲ or something like that and hope the user has a font that can show it.
Short of migrating to Unicode with a newer version of Delphi, you'll have to find a set of low ASCII characters that can do a suitable animation.
I'd suggest using a digit sequence [0-9] or [1-3] to stay with your 3 chars sequence. That should work with all the Japanese code sets.
If the Unicode Fonts on the user computer supports it you could also try charactores of one of these Unicode blocks:
(for VCL only, for console applications the problem is the character set / code page of the shell)
But this sounds promising (except for the font part, which could be out of control):
Writeln in Delphi 2009 still uses ANSI (see System TTextRec) but you can use UTF8Encode and change the console's output code page to UTF8 by calling SetConsoleOutputCP(CP_UTF8). You will also need a good font to actually display Unicode characters.