Аналитика
http://geosystema.net/forum/

Функции для перевода числа в текст в Репортс!
http://geosystema.net/forum/viewtopic.php?f=1&t=19713
Страница 1 из 1

Автор:  Aleksey [ 15 янв 2018 21:16 ]
Заголовок сообщения:  Функции для перевода числа в текст в Репортс!

// обидві функції працюють лише зі строковими параметрами (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;

Автор:  Руслан Пархуць [ 16 янв 2018 00:48 ]
Заголовок сообщения:  Re: Функции для перевода числа в текст в Репортс!

Код:
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;         

Страница 1 из 1 Часовой пояс: UTC + 2 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/