function SumaZod(SumaSk: double):string; var SumaStr: string; Centai: integer; Litai : integer; CentaiStr: string; procedure calc10_19(); begin Case Litai of 10 : SumaStr:= SumaStr + ' deðimt'; 11 : SumaStr:= SumaStr + ' vienuolika'; 12 : SumaStr:= SumaStr + ' dvylika'; 13 : SumaStr:= SumaStr + ' trylika'; 14 : SumaStr:= SumaStr + ' keturiolika'; 15 : SumaStr:= SumaStr + ' penkiolika'; 16 : SumaStr:= SumaStr + ' ðeðiolika'; 17 : SumaStr:= SumaStr + ' septyniolika'; 18 : SumaStr:= SumaStr + ' aðtuoniolika'; 19 : SumaStr:= SumaStr + ' devyniolika'; end; end; procedure calc20_99(); begin if Litai >= 90 then SumaStr:= SumaStr + ' devyniasdeðimt' else if Litai >= 80 then SumaStr:= SumaStr + ' aðtuoniasdeðimt' else if Litai >= 70 then SumaStr:= SumaStr + ' septyniasdeðimt' else if Litai >= 60 then SumaStr:= SumaStr + ' ðeðiasdeðimt' else if Litai >= 50 then SumaStr:= SumaStr + ' penkiasdeðimt' else if Litai >= 40 then SumaStr:= SumaStr + ' keturiasdeðimt' else if Litai >= 30 then SumaStr:= SumaStr + ' trisdeðimt' else if Litai >= 20 then SumaStr:= SumaStr + ' dvideðimt'; Litai:= Litai mod 10; end; procedure calc1_9(); begin Case Litai of 1 : SumaStr:= SumaStr + ' vienas'; 2 : SumaStr:= SumaStr + ' du'; 3 : SumaStr:= SumaStr + ' trys'; 4 : SumaStr:= SumaStr + ' keturi'; 5 : SumaStr:= SumaStr + ' penki'; 6 : SumaStr:= SumaStr + ' ðeði'; 7 : SumaStr:= SumaStr + ' septyni'; 8 : SumaStr:= SumaStr + ' aðtuoni'; 9 : SumaStr:= SumaStr + ' devyni'; end; end; procedure calc100_200(); begin SumaStr:= SumaStr + ' ðimtas'; Litai := Litai - 100; end; procedure calc200_1000(); var LitaiUse: integer; begin LitaiUse := Litai; Litai:= (Litai - Litai mod 100) div 100; calc1_9(); SumaStr:= SumaStr + ' ðimtai'; Litai := LitaiUse - Litai *100; end; procedure calc9_1000(); begin if (Litai>199) and (Litai<1000) then calc200_1000(); if (Litai>99) and (Litai<200) then calc100_200(); if (Litai>19) and (Litai<100) then calc20_99(); if (Litai>9) and (Litai<20) then calc10_19(); end; procedure calcT_2T(); begin SumaStr:= SumaStr + ' tûkstantis'; Litai := Litai - 1000; end; procedure calc2T_100T(); var LitaiUse: integer; begin LitaiUse:= Litai; Litai:= (Litai - Litai mod 1000) div 1000; LitaiUse:= LitaiUse - Litai *1000; calc9_1000(); if (Litai>1) and (Litai<10) then begin calc1_9(); SumaStr := SumaStr + ' tûkstanèiai'; end else if Litai = 1 then SumaStr:= SumaStr + ' vienas tûkstantis' else SumaStr:= SumaStr + ' tûkstanèiø'; Litai := LitaiUse; end; procedure calc1M_100M(); var LitaiUse: integer; begin LitaiUse := Litai; Litai:= (Litai - Litai mod 1000000) div 1000000; LitaiUse:= LitaiUse - Litai * 1000000; calc9_1000(); if (Litai > 1) and (Litai < 10) then begin calc1_9(); SumaStr := SumaStr + ' milijonai' end else if Litai = 1 then SumaStr := SumaStr + ' vienas milijonas' else SumaStr := SumaStr + ' milijonø'; Litai := LitaiUse; end; begin Centai := round(Frac(SumaSk) * 100); Litai := round(Int(SumaSk)); if (Litai div 100=1) or (Litai div 1000=1) or (Litai div 100000=1) or (Litai div 100000000=1) then SumaStr := 'Vienas'; if (Litai>999999) and (Litai<100000000) then calc1M_100M(); if (Litai>1999) and (Litai<1000000) then calc2T_100T(); if (Litai>999) and (Litai < 2000) then calcT_2T(); calc9_1000(); if (Litai > 0) and (Litai < 10) then calc1_9(); centaistr := IntToStr(Centai); if Length(CentaiStr) = 1 then CentaiStr:= '0' + CentaiStr; if Length(SumaStr) = 0 then SumaStr:= '0'; SumaStr := SumaStr + ' Lt. ' + CentaiStr + ' ct.'; SumaStr:= Trim(SumaStr); SumaStr[1]:= Upcase(SumaStr[1]); Result:= SumaStr; end;