Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сумма прописью. Подскажите плиз, где можно взять данную [D5, Oracle]


Бульбаш ©   (2002-04-18 09:49:00) 

функцию (русскую конечно). Или кто может поделиться наработкой.


Бульбаш   (2002-04-18 16:46:00) [1]

Всем спасибо, действительно есть из чего выбрать+ рассматриваю вариант процедуры на оракловском сервере, тоже вроде бы ничего работает...


Alexander Vasjuk   (2002-04-18 16:30:00) [2]

Вот.
Сам написал :)
На самом деле короче я не видел.

function MoneyToText(Money: Double): String;

type
TN125 = (n1, n2, n5);
TSex = (m, f);

const
N125: Array[0..9] of TN125 = (n5, n1, n2, n2, n2, n5, n5, n5, n5, n5);
ST: Array[0..6, TN125] of String =
(("гривна", "гривны", "гривен"),
("тысяча", "тысячи", "тысяч"),
("миллион", "миллиона", "миллионов"),
("миллиард", "миллиарда", "миллиардов"),
("трилион", "трилиона", "трилионов"),
("квадрильон", "квадрильона", "квадрильонов"),
("квинтильон", "квинтильона", "квинтильонов"));
Sex: Array[0..6] of TSex = (f, f, m, m, m, m, m);
SI: Array[TSex, 0..9] of String = (("", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять"),
("", "одна", "две", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять"));
SIi: Array[0..9] of String = ("десять", "одинадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать",
"шестнадцать", "семнадцать", "восемнадцать", "девятнадцать");
SIo: Array[0..9] of String = ("", "десять", "двадцать", "тридцать", "сорок", "пятьдесят",
"шестьдесят", "семдесят", "восемьдесят", "девяносто");
SIoo: Array[0..9] of String = ("", "сто", "двести", "триста", "четыреста", "пятьсот",
"шестьсот", "семьсот", "восемьсот", "девятьсот");
function Get_T(N: Int64; No: Integer): Integer;
var
I: Integer;
begin
for I := 1 to No do N := N div 1000;
Result := N - N div 1000 * 1000;
end;

function Get_T_Str(N, No: Integer): String;
var
Ioo, Io, I: Integer;
begin
Ioo := N div 100;
Io := (N - Ioo * 100) div 10;
I := N - Ioo * 100 - Io * 10;
Result := SIoo[Ioo];
if Io = 1 then
Result := Result + " " + SIi[I] else
Result := Result + " " + SIo[Io] + " " + SI[Sex[No], I];
if Io = 1 then I := 5;
Result := Result + " " + ST[No, N125[I]];
end;

var
i, N, T: Integer;
begin
Result := "";
Money := Round(Money * 100) / 100;
N := Trunc(Money);
for i := 0 to 6 do
begin
T := Get_T(N, i);
if T <> 0 then
Result := Get_T_Str(T, i) + " " + Result else
if i = 0 then Result := " гривен";
end;
Result := Format("%s %2.2d коп.", [Result, Round((Money - N) * 100)]);
end;


@andrew   (2002-04-18 15:14:00) [3]

Если еще надо, то могу скинуть на мыло dll-ку с описанием.
Токма отпишись на мыло о той самой надобности, ибо на форуме бываю не часто :))


Оул   (2002-04-18 13:55:00) [4]

У меня есть.


Explorer   (2002-04-18 11:08:00) [5]

есть такая


Alexandr   (2002-04-18 10:42:00) [6]

www.torry.net


Бульбаш   (2002-04-18 10:41:00) [7]

Надо для D5. А можно глупый вопрос? Я в делфях недавно, можно поподробнее, что есть VGlib и SohoLib, насколько я понимаю доп.компоненты. (если так, то где можно взять???)


Sergey13   (2002-04-18 10:22:00) [8]

Если надо для D5 то есть например в SohoLib, если для Оракла то сходи на http://oraclub.trecom.tomsk.su/там несколько вариантов.


Alexandr   (2002-04-18 09:54:00) [9]

да валом таких


Lusha   (2002-04-18 09:53:00) [10]

Опять же VGLib...


Johnmen   (2002-04-18 09:52:00) [11]

Я могу...


Наверх

Титульная страница Поиск, карта сайта Написать письмо