Gd convert.GetNumeral
Материал из GedeminWiki
Версия от 11:13, 27 июля 2016; SYSDBA (обсуждение | вклад)
Модуль: Gd convert.pas | Тип: function |
Delphi:
function GetNumeral(const AFormat: String; AValue: Double; const ARounding: Double; const AFracBase: Integer; const ACase: Integer; const AParts: Integer; const ANames: String): String;
Описание
Конвертирует число в строку.
- AFormat
- Строка формата может содержать следующие метапеременные:
@N -- числительное для всего числа @N#,##0.00 -- отформатированное число. Маска задается как в функции FormatFloat @NG -- число преобразованное с помощью функции FloatToStr @W -- целая часть, числительное @W#,##0.00 -- целая часть, отформатированное число @WG -- целая часть @D -- дробная часть, числительное @D#,##0.00 -- дробная часть, отформатированное число @DG -- дробная часть @F -- полное наименование целых единиц @B -- сокращенное наименование целых единиц @C -- полное наименование дробных единиц @K -- сокращенное наименование дробных единиц @S -- знак валюты @I -- ISO валюты @O -- код валюты
Любой символ в строке формата, предваренный обратным слэшем \, попадет в результирующую строку.
- AValue
- Значение для преобразования
- ARounding
- Округление. 0 -- без округления. 1 -- до целого числа. 10 -- до десятков. 100 -- до сотен, 0.01 -- до сотых, 5 -- число будет кратно 5, 0.5 -- число кратно 0.5 и т.д.
- AFracBase
- Количество десятичных позиций, которые составляют дробную единицу. Например, при преобразовании в строку тонны-килограммы, когда величина задается в тоннах, AFracBase = 3.
- ACase
- Регистр результирующей строки. Целочисленное значение. caseName = 0 -- Первая буква заглавная, остальные строчные; caseLower = 1, caseUpper = 2 -- в нижнем и верхнем регистре, соответственно; caseMixed = 3 -- не изменять регистр. Знак валюты и код валюты не преобразовываются, а выводятся в строку так как задано при вызове функции.
- AParts
- Битовая маска может включать следующие значения: partSubstWhenZero = 1 -- если значение ноль, то подставлять переданную строку, partHideFracWhenZero = 2 -- не выводить дробную часть, если она равна нулю, partHideWholeWhenZero = 4 -- не выводить целую часть если она равна нулю.
- ANames
- наименования, через запятую, в следующем порядке:
- Целая единица, именительный падеж, единственное число. Например, тонна
- Целая единица, родительный падеж, единственное число. Например, тонны
- Целая единица, родительный падеж, множественное число. Например, тонн
- Сокращенное наименование целой единицы. Например, т.
- Дробная единица, именительный падеж, единственное число. Например, килограмм
- Дробная единица, родительный падеж, единственное число. Например, килограмма
- Дробная единица, родительный падеж, множественное число. Например, килограмм
- Сокращенное наименование дробной единицы. Например, кг
- Строка, которая будет подставлена, если задан флаг partSubstWhenZero
- Десятичный разделитель. Если не задан, то используется разделитель из настроек операционной системы
- Разделитель групп цифр (тысяч). Если не задан, то используется разделитель из настроек операционной системы
- Знак валюты. Например, Br
- Код валюты по ISO. Например, 933
- Код валюты. Например, BYN
Если параметр содержит запятую, то его необходимо взять в двойные кавычки.
Пустые концевые параметры в списке могут быть пропущены.
Примеры использования
Вызов функции | Результат |
---|---|
GetNumeral('@W#,##0.### @B @D0.#### @K', 0, 0, 3, 0, caseName, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | 0 т 0 кг |
GetNumeral('@W0 @F @D0 @C', 0, 0, 3, 0, caseName, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | 0 тонн 0 килограмм |
GetNumeral('@W @F @D @C', 0, 0, 3, 0, caseName, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | Ноль тонн ноль килограмм |
GetNumeral('@W @F @D @C', 0, 0, 3, caseName, partSubstWhenZero, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | -- |
GetNumeral('@W @F @D @C', 0, 0, 3, caseName, partHideFracWhenZero + partHideWholeWhenZero, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | |
GetNumeral('@W @F @D0 @K', 0, 0, 3, caseName, partHideWholeWhenZero, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | 0 кг |
GetNumeral('@W @F @D0 @K', 0, 0, 3, caseName, partHideFracWhenZero, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | Ноль тонн |
GetNumeral('@N#,##0.###', 5687.3694, 0.001, 3, caseName, 0, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | 5 687.369 |
GetNumeral('@N#,##0.### @B', 5687.3694, 0.001, 3, caseName, 0, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | 5 687.369 т |
GetNumeral('@W#,##0.### @B @D000 @K', 5687.3694, 0.001, 3, 0, caseName, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | 5 687 т 369 кг |
GetNumeral('@W#,##0.### @B @D#.## @K', 5687.3694, 0, 3, 0, caseName, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | 5 687 т 369.4 кг |
GetNumeral('@W#,##0.### @B @D#.#### @K', 5687.36944, 0, 3, 0, caseName, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | 5 687 т 369.44 кг |
GetNumeral('@W @F', 5687.3694, 0.001, 3, caseName, 0, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | Пять тысяч шестьсот восемьдесят семь тонн |
GetNumeral('@W @F @D @C', 5687.3694, 0.001, 3, caseName, 0, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | Пять тысяч шестьсот восемьдесят семь тонн триста шестьдесят девять килограмм |
GetNumeral('@W @F @D000 @K', 5687.3694, 0.001, 3, caseName, 0, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | Пять тысяч шестьсот восемьдесят семь тонн 369 кг |
GetNumeral('@W @F @D000.# @K', 5687.3694, 0, 3, caseName, 0, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | Пять тысяч шестьсот восемьдесят семь тонн 369.4 кг |
GetNumeral('@W @F @D000 @K', 5687.3694, 0.001, 3, caseName, 0, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | Пять тысяч шестьсот восемьдесят семь тонн 369 кг |
GetNumeral('@W @F @D000 @C', 5687.3694, 0.001, 3, caseName, 0, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | Пять тысяч шестьсот восемьдесят семь тонн 369 килограмм |
GetNumeral('@W @F @D000.#### @K', 5687.3694, 0, 3, caseName, 0, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | Пять тысяч шестьсот восемьдесят семь тонн 369.4 кг |
GetNumeral('\@N', 5687.3694, 0, 3, caseName, 0, 'тонна,тонны,тонн,т,килограмм,килограмма,килограмм,кг,--,.," "') | @N |