All pastes #105043 Raw Edit

Someone

public text v1 · immutable
#105043 ·published 2006-07-29 12:51 UTC
rendered paste body
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;