Gd convert.GetNumeral
Материал из GedeminWiki
Версия от 02:33, 3 июля 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 -- в нижнем и верхнем регистре соответственно. Знак валюты и код валюты не преобразовываются, а выводятся в строку так как задано при вызове функции.
- 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 кг |