Delphi XE2 AnsiFormat() and ANSI String constants
-
07-02-2021 - |
Pergunta
Is there a handy Format() function that works only on Ansi strings? Because everytime I use an AnsiString with Format() I get a warning. And no, I don't want Delphi to convert my AnsiStrings back and forth between Wide and Ansi strings. That is just making things awfully slower. Also, is there a way to force a string constant to be Ansi? check this out
function SomeStrFunc(S: AnsiString): AnsiString; overload;
function SomeStrFunc(S: String): String; overload;
and then when I use SomeStrFunc('ABC') it will call the wide string version. What if I want to use the Ansi version and force Delphi to store 'ABC' constant in AnsiChars.
Solução
There is Ansi version of Format
function in System.AnsiStrings
unit
Outras dicas
Serg answered your question about an AnsiString
version of Format()
. I'll answer your other question.
String literals are encoded based on the context they are used, so to force a literal to a particular encoding, you have to tell the compiler which encoding it needs to use, eg:
SomeStrFunc(AnsiString('ABC'));
Or
const
cABC: AnsiString = 'ABC';
SomeStrFunc(cABC);