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
наименования, через запятую, в следующем порядке:
  1. Целая единица, именительный падеж, единственное число. Например, тонна
  2. Целая единица, родительный падеж, единственное число. Например, тонны
  3. Целая единица, родительный падеж, множественное число. Например, тонн
  4. Сокращенное наименование целой единицы. Например, т.
  5. Дробная единица, именительный падеж, единственное число. Например, килограмм
  6. Дробная единица, родительный падеж, единственное число. Например, килограмма
  7. Дробная единица, родительный падеж, множественное число. Например, килограмм
  8. Сокращенное наименование дробной единицы. Например, кг
  9. Строка, которая будет подставлена, если задан флаг partSubstWhenZero
  10. Десятичный разделитель. Если не задан, то используется разделитель из настроек операционной системы
  11. Разделитель групп цифр (тысяч). Если не задан, то используется разделитель из настроек операционной системы
  12. Знак валюты. Например, Br
  13. Код валюты по ISO. Например, 933
  14. Код валюты. Например, 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
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты