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

Вниз

перевод числа в строку   Найти похожие ветки 

 
ALI2002   (2002-11-05 14:21) [0]

Где найти компоненту перевод числа в сумму прописью ?


 
myor   (2002-11-05 14:22) [1]

компонент?
а inttostr() не подойдет?


 
Внук   (2002-11-05 14:23) [2]

http://delphibase.endimus.com/


 
SaS13   (2002-11-05 14:31) [3]

когда-то здесь отрыл, не помню чья именно:
const
SumArr: array [0..8, 0..9] of string =
(
( "","один ","два ","три ","четыре ","пять ","шесть ","семь ","восемь ","девять " ),
( "","","двадцать ","тридцать ","сорок ","пятьдесят ","шестьдесят ","семьдесят ","восемьдесят ","девяносто " ),
( "","сто ","двести ","триста ","четыреста ","пятьсот ","шестьсот ","семьсот ","восемьсот ","девятьсот " ),
( "тысяч ","тысяча ","две тысячи ","три тысячи ","четыре тысячи ","пять тысячь ","шесть тысячь ","семь тысячь ","восемь тысячь ","девять тысячь " ),
( "","","двадцать ","тридцать ","сорок ","пятьдесят ","шестьдесят ","семьдесят ","восемьдесят ","девяносто " ),
( "","сто ","двести ","триста ","четыреста ","пятьсот ","шестьсот ","семьсот ","восемьсот ","девятьсот " ),
( "миллионов ","один миллион ","два миллиона ","три миллиона ","четыре миллиона ","пять миллионов ","шесть миллионов ","семь миллионов ","восемь миллионов ","девять миллионов " ),
( "","","двадцать ","тридцать ","сорок ","пятьдесят ","шестьдесят ","семьдесят ","восемьдесят ","девяносто " ),
( "","сто ","двести ","триста ","четыреста ","пятьсот ","шестьсот ","семьсот ","восемьсот ","девятьсот " )
);
SumArr2: array [0..9] of string =
( "десять ","одинадцать ","двенадцать ","тринадцать ","четырнадцать ","пятьнадцать ","шестьнадцать ","семьнадцать ","восемьнадцать ","девятьнадцать " );

{Преобразование суммы в текст, т.е. на входе ("1234.45", "USD") возвращает
строку "Одна тысяча двести тридцать четыре, 45 USD"}
function SumToString( const Value, KodVal: string): string;
var
hi, lo: string;

procedure Get2Str( const _val: string; var _hi, _lo: string );
var
p: integer;
begin
p := pos( ",", _val );
_lo := "0";
_hi := "0";
if p = 0 then
p := pos( ".", _val );
if (p = 0) or (p > Length( _val )) then begin
_hi := _val;
_lo := "0"
end
else if p = 1 then begin
_hi := "0";
_lo := _val
end
else begin
_hi := copy( _val, 1, p - 1 );
_lo := copy( _val, p + 1, Length( _val ) )
end
end;

function Part1SumToStr( const _val: string ): string;
var
s, t : string;
p, pp, i: integer;
begin
s := _val;
if StrToInt( s ) = 0 then
t := "Ноль "
else begin
p := Length( s );
pp := p;
if p > 1 then
if (s[p - 1] = "1") and (s[p] > "0") then begin
t := SumArr2[StrToIntDef( s[p], 0 )];
pp := pp - 2
end;
i := pp;
while i > 0 do begin
if (i = p - 3) and (p > 4) then
if s[p - 4] = "1" then begin
t := SumArr2[StrToIntDef( s[p - 3], 0 )] + "тысяч " + t;
i := i - 2
end;
if (i = p - 6) and (p > 7) then
if s[p - 7] = "1" then begin
t := SumArr2[StrToIntDef( s[p - 6], 0 )] + "миллионов " + t;
i := i - 2
end;
if i > 0 then begin
t := SumArr[p - i, StrToIntDef( s[i], 0 )] + t;
i := i - 1
end
end
end;
Result := t
end;

function Part2SumToStr( const _val: string ): string;
var
_pnt : word;
begin
_pnt := 2;// PointByValut( KodVal ); - у меня по коду валюты бралось кол-во знаков после запятой :))
Result := _val;
while Length( Result ) < _pnt do
Result := Result + "0"
end;

begin
Result := Value + " " + KodVal;
try
Get2Str( Value, hi, lo );
if StrToIntDef( hi, -1 ) <> -1 then
hi := Part1SumToStr( hi )
else
hi := EmptyStr;
if StrToIntDef( lo, 0 ) <> 0 then
lo := ", " + Part2SumToStr( lo ) + " "
else
lo := " ";
Result := hi + lo + KodVal;
Result[1] := AnsiUpperCase( Result[1] )[1]
except
end
end;



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

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

Наверх




Память: 0.47 MB
Время: 0.009 c
1-45841
the7guest
2002-11-05 08:10
2002.11.14
Старорежимное добавление в автозагрузку


3-45754
Шурик Ш
2002-10-24 11:38
2002.11.14
Проблема с кодировкой


1-45919
NONAME00
2002-11-02 23:53
2002.11.14
HLP


1-45900
Ноавенький в Делфи
2002-11-06 05:50
2002.11.14
Как прокрутить StringGrid к определённой ячейке?


14-46103
keymaster
2002-10-27 02:16
2002.11.14
КАК ОНО РАБОТАЕТ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский