Функции для перевода числа в текст в Репортс!

// обидві функції працюють лише зі строковими параметрами (S:String) та видають результат у строковому вигляді :String;

function FormatGroshi(S:String):String; //форматує дробну частину строкового значення числа.
//Якщо в дробній частині більше двох символів, відкидує зайві
//Якщо дробної частини немає додає розділювач крапку і два значущих символа ‘.00’
var S_GR, S_COP:String; // змінна S_GR- це ціла частина строкового значення числа (гривні),
// змінна S _COP- це дробна частина строкового значення числа
I:integer;
begin
I:=Pos(S,‘.’); //визначає наявність у строковому значенні
// числа розділювача ‘.’ (тобто дробної частини)
// якщо I=0 то дробної частини не має, якщо I>0 дробова чатина є
S_GR:= StringPart(S,1,‘.’);//визначення цілого значення в гривнях
S_COP:= Copy(StringPart(S,2,‘.’),1,2); // копіює дві перші цифри дробної частини
if I=0 // якщо виконується умова (if) тоді (then) до значення цілої частини додається ‘.00’
then S_COP:=‘.00’;
Result:=S_GR+S_COP;
end;

function GroshiPropisом(S:String):String;// переводить значення строкового значення числа у текстовий вигляд
// залишаючи значення копійок у цифрах: результат =( 1002.03-одна тисяча дві гривні 03 копійки)
var S_GR, S_COP:String;// змінна S_GR- це ціла частина строкового значення числа (гривні),
// змінна S _COP- це дробна частина строкового значення числа
begin
S_GR:= StringPart(S,1,‘.’);//визначення цілого значення в гривнях
S_COP:= Copy(StringPart(S,2,‘.’),1,2);// скопіювати перші дві цифри дробної частини (копійки)
if S_COP =‘’ then S_COP:=‘.00’; //Якщо дробної частини немає додає розділювач крапку і два значущих символа ‘.00’
S_GR_propis_Vidminok:=Money(StrToInt(S_GR),‘гривня;гривні;гривень’);// визначає яке із 3-х
//значень списку ‘гривня;гривні;гривень’ у текстовому виразі числа
//(одна гривня, дві гривні, п"ять гривень)
S_COP_propis_Vidminok:=Money(StrToInt(S_COP),‘копійка;копійки;копійок’);// визначає яке із 3-х
//значень списку ‘копійка;копійки;копійок’ у текстовому виразі числа необхідно
//додати у строку (00 копійок, 02 копійки, 01 копійка)
if S_COP =‘00’ then S_COP_propis_Vidminok:=‘копійок’;
S_GR_propis:= NumToStr(StrToInt(S_GR),‘0’,‘1’)+’ ‘+ S_GR_propis_Vidminok;
S_COP_propis:=S_COP+’ ‘+ S_COP_propis_Vidminok;
Result:= S_GR_propis+’ '+ S_COP_propis; //результат роботи функції- це будь яке число (сума) переведене до текстового вигляду
end;

function StrToMoney (S: String): String; var num, denom: Integer; DecDelimeter: Char; begin DecDelimeter:=Copy(FloatToStr(1/10),2,1); S := FormatFloat('0.00', StrToFloat(S)); num := StrToInt(StringPart(S,1,DecDelimeter)); denom := StrToInt(StringPart(S,2,DecDelimeter)); Result:=NumToStr(num,'0','1')+Money(num,'гривня;гривні;гривень')+' '+StringPart(S,2,DecDelimeter)+' '+Money(denom,'копійка;копійки;копійок'); end;