>function currency2str (value: double): 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: int64;
> 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+' одна' else result:=result+' один';
> 2: if raz=1 then result:=result+' две' else 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
> val:=Trunc(value);
> if val=0 then begin result:='ноль'; 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));
> Result:=Result+' руб. '+s+' коп.';
>end;