Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];

Вниз

Сумма прописью   Найти похожие ветки 

 
Leonon   (2002-04-03 09:47) [2]

Вот готовая рабочая функция



{GetTextSum}
function GetTextSum(Sum : extended):string;

Type
TNameArr = array [0..4,0..2] of string;

Var
S : string;
I : integer; {счетчик по числу триад }
Sex : byte; {пол 0 - женский, 1 - мужской}

Const
{единицы}
One : array [0..1,0..9] of string = (("","одна ","дв_ ","три ","чотири ","п""ять ",
"ш_сть ","сiмь ","вiсiмь ","дев""ять "),("","один ","два ","три ","чотири ","п""ять ",
"ш_сть ","сiмь ","вiсiмь ","дев""ять "));
{от десяти до двадцати}
AfterTen : array [0..9] of string = ("десять ","одинадцять ","дванадцять ","тринадцять ",
"чотирнадцять ","п""ятнадцять ","ш_стнадцять ","с_мнадцять ","в_с_мнадцять ",
"дев""ятнадцать ");
{десятки}
Ten : array [0..9] of string = ("","десять ","двадцять ","тридцять ","сорок ",
"п""ятьдесят ","шiстьдесят ","сiмьдесят ","вiсiмьдесят ","дев""яносто ");
{сотни}
Handred : array [0..9] of string = ("","сто ","дв_ст_ ","триста ","чотириста ",
"п""ятьсот ","шiстьсот ","сiмьсот ","вiсiмьсот ","дев""ятьсот ");
{триады}
Name : TNameArr =
(("гривня","гривнi","гривень"),
("тисяча ","тисяч_ ","тисяч "),
("м_л_он ","м_л_она ","м_л_он_в "),
("м_л_ард ","м_л_арда ","м_л_ард_в "),
("трил_он ","трил_она ","трил_он_в "));

begin
S := FloatToStr(Sum*100);
{Выделяем дробную часть числа (копейки)}
Result := " "+Copy(S, Length(S)-1, 2)+" коп.";
{Выделяем целую часть числа (рубли)}
S := Copy(S,1,Length(S)-2);
{Добавляем нули спереди, чтобы длина стала кратна 3}
if ((Length(s) mod 3)<>0) or (Length(s)=0) then for I:=1 to 3-(Length(s) mod 3) do S:="0"+S;
{Формируем цикл по числу триад}
if (Length(S) div 3)<>0 then
for I := 0 to (Length(S) div 3)-1 do begin
{пол триады}
Sex :=1;
Case I of
0 : Sex:=0; {пол женский}
1 : Sex:=0; {тысяча}
2,3,4 : Sex:=1; {миллион, миллиард, триллион}
end;
{название триады}
if Not ((S[Length(S)-I*3-2]="0") and (S[Length(S)-I*3-1]="0") and
(S[Length(S)-I*3]="0") and (I<>0)) then
Case S[Length(S)-I*3-1] of
"0" : Case S[Length(S)-I*3] of
"0" : Result:=Name[I,2]+Result;
"1" : Result:=Name[I,0]+Result;
"2".."4" : Result:=Name[I,1]+Result;
"5".."9" : Result:=Name[I,2]+Result;
end;
"1" : Result:=Name[I,2]+Result;
"2".."9" : Case S[Length(S)-I*3] of
"0" : Result:=Name[I,2]+Result;
"1" : Result:=Name[I,0]+Result;
"2".."4" : Result:=Name[I,1]+Result;
"5".."9" : Result:=Name[I,2]+Result;
end;
end;
{текстовое значение триады}
Case S[Length(S)-I*3-1] of
"0" : if S="000" then Result:="Нуль "+Result
else Result:=One[Sex, StrToInt(S[Length(S)-I*3])]+Result;
"1" : Result:=AfterTen[StrToInt(S[Length(S)-I*3])]+Result;
"2".."9" : begin
Case S[Length(S)-I*3] of
"1".."9" : Result:=One[Sex, StrToInt(S[Length(S)-I*3])]+Result;
end;
Result:=Ten[StrToInt(S[Length(S)-I*3-1])]+Result;
end;
end;
Result:=Handred[StrToInt(S[Length(S)-I*3-2])]+Result;
end;
if Result<>"" then Result[1]:= string(AnsiUpperCase(Result[1]))[1];
end;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
1-46399
Schummi
2002-03-30 08:08
2002.04.15
Panel:=TPanel.Create(Form);


1-46337
nastya_
2002-04-03 19:13
2002.04.15
www браузер


1-46359
rem_
2002-04-04 10:11
2002.04.15
dll в адресном пространстве Explorer а


1-46307
Glonia Zbanov
2002-04-03 15:22
2002.04.15
WM_GETMINMAXINFO сразу для всех форм


3-46285
Sewix
2002-03-26 13:46
2002.04.15
поиск по БД (Access)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский