Модератор: Модераторы
function currency2Str (value: currency): string;
const hundreds: array [0..9] of string = ('',' сто',' двісті',' триста',' чотириста',' п''ятсот',
' шістсот',' сімсот',' вісімсот',' дев''ятсот');
tens: array [0..9] of string = ('','',' двадцять',' тридцять',' сорок',' п''ятдесят',' шістдесят',' сімдесят',' вісімдесят',' дев''яносто');
ones: array [0..19] of string = ('','','',' три',' чотири',' п''ять',' шість',' сім',' вісім',
' дев''ять',' десять',' одиннадцять',' дванадцять',' тринадцять',
' чотирнадцять',' п''ятнадцять',' шістнадцять',' сімнадцять',
' вісімнадцять',' дев''ятнадцять');
razryad: array [0..6] of string = ('',' тисяч',' мільйон',' мільярд',' трильйон',' квадрильйон', ' квінтільйон');
var s: string; i: integer; val: integer;
function shortNum(s: string; raz: integer): string;
begin
Result:=hundreds[StrToInt(s[1])];
if StrToInt(s)=0 then Exit;
if s[2]<>'1' then begin
Result:=Result+tens[StrToInt(s[2])];
case StrToInt(s[3]) of
1: if raz=1 then Result:=Result+' одна';
2: if raz=1 then Result:=Result+' дві'
else Result:=Result+ones[StrToInt(s[3])];
end;
Result:=Result+razryad[raz];
case StrToInt(s[3]) of
0,5,6,7,8,9: if raz>1 then Result:=Result+'ів';
1: if raz=1 then Result:=Result+'а';
2,3,4: if raz=1 then Result:=Result+'і' else if raz>1 then Result:=Result+'а';
end;
end else begin
Result:=Result+ones[StrToInt(Copy(s,2,2))];
Result:=Result+razryad[raz];
if raz>1 then Result:=Result+'ів';
end;
end;
begin
//перевірка, чи сума від'ємна
if value<0 then begin
Result := 'мінус ';
value := System.Abs(Value);
end;
val:=Trunc(value);
if val=0 then begin Result:='нуль грн. 00 коп.'; Exit; end;
s:=IntToStr(val); Result:=''; i:=0;
while Length(s)>0 do begin
Result:=shortNum(Copy('00'+s,Length('00'+s)-2,3),i)+Result;
if Length(s)>3 then s:=Copy(s,1,Length(s)-3) else s:='';
inc(i);
end;
s:=IntToStr(Trunc((value-val)*100+0.5));
if s='0' then s := '00';
Result:=Result+' грн. '+s+' коп.';
end;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8