Как мне отформатировать целое число с использованием текущей локали в Delphi - PullRequest
4 голосов
/ 17 ноября 2008
var i : integer;

i := 1234567;

Учитывая вышеизложенное, я хочу получить строку "1,234,567" в качестве выходной информации (при условии, что локаль в Великобритании). IntToStr просто дает мне «1234567». Я уверен, что для этого есть одна строчка, но я не могу ее найти ...

Ответы [ 5 ]

18 голосов
/ 17 ноября 2008

Попробуйте функцию форматирования.

Label1.Caption := Format('%.0n', [i + 0.0]);
11 голосов
/ 17 ноября 2008

Или, если вы хотите быть потокобезопасным или хотите убедиться, что вы используете системный языковой стандарт по умолчанию или хотите указать его:

function FormatIntFromLCID(const AValue: Integer; const LCID: Integer = LOCALE_SYSTEM_DEFAULT): string;
var
  AFormatSettings: TFormatSettings;
begin
  GetLocaleFormatSettings(LCID, AFormatSettings);
  Result := FormatFloat('#,##0',AValue, AFormatSettings);
end;

см. этот пост для более полного обсуждения о форматировании / locales

6 голосов
/ 17 ноября 2008

s: = FormatFloat ('#, ## 0', i);

0 голосов
/ 17 ноября 2008

Формат ('% n', [12345.678]);

0 голосов
/ 17 ноября 2008
stringreplace(format('%n',[1234567.0]),'.00','',[]);
...