Аналитика 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/ |