Fungsi Terbilang (Delphi)

Fungsi terbilang versi Delphi ini adalah hasil konversi dari kode yang dibuat untuk Clipper. Cara pemanggilan dan hasil yang dikeluarkannya sama persis dengan kode sebelumnya.

Jika saya sempat, saya akan berusaha untuk membuat beberapa versi fungsi terbilang ini seperti untuk ASP, PHP dan lainnya tapi jangan terlalu berharap ya?

function SayIt(sValue: string):string;
const
  Angka : array [1..20] of string =
          ('', 'satu', 'dua', 'tiga', 'empat',
           'lima', 'enam', 'tujuh', 'delapan',
           'sembilan', 'sepuluh', 'sebelas',
           'duabelas', 'tigabelas', 'empatbelas',
           'limabelas', 'enambelas', 'tujuhbelas',
           'delapanbelas', 'sembilanbelas');
  sPattern: string = '000000000000000';

var
  S : string;
  Satu, Dua, Tiga, Belas, Gabung: string;
  Sen, Sen1, Sen2: string;
  Hitung : integer;
  One, Two, Three: integer;

begin
  One    := 1;
  Two    := 2;
  Three  := 3;
  Hitung := 1;
  Kata   := '';
  S := copy(sPattern, 1, length(sPattern) - length(trim(sValue))) + sValue;
  Sen1 := Copy(S, 14, 1);
  Sen2 := Copy(S, 15, 1);
  Sen  := Sen1 + Sen2;
  while Hitung < 5 do
  begin
    Satu := Copy(S, One, 1);
    Dua  := Copy(S, Two, 1);
    Tiga := Copy(S, Three, 1);
    Gabung := Satu + Dua + Tiga;

    if StrToInt(Satu) = 1 then
       Kata := Kata + 'seratus '
    else
       if StrToInt(Satu) > 1 Then
          Kata := Kata + Angka[StrToInt(satu)+1] + ' ratus ';

    if StrToInt(Dua) = 1 then
       begin
         Belas := Dua + Tiga;
         Kata := Kata + Angka[StrToInt(Belas)+1];
       end
    else
       if StrToInt(Dua) > 1 Then
          Kata := Kata + Angka[StrToInt(Dua)+1] + ' puluh ' +
                  Angka[StrToInt(Tiga)+1]
    else
       if (StrToInt(Dua) = 0) and (StrToInt(Tiga) > 0) Then
          begin
            if ((Hitung = 3) and (Gabung = '001')) or
               ((Hitung = 3) and (Gabung = '  1')) then
               Kata := Kata + 'seribu '
            else
               Kata := Kata + Angka[StrToInt(Tiga)+1];
          end;

    if (hitung = 1) and (StrToInt(Gabung) > 0) then
       Kata := Kata + ' milyar '
    else
       if (Hitung = 2) and (StrToInt(Gabung) > 0) then
          Kata := Kata + ' juta '
    else
       if (Hitung = 3) and (StrToInt(Gabung) > 0) then
          begin
            if (Gabung = '001') or (Gabung = '  1') then
               Kata := Kata + ''
            else
               Kata := Kata + ' ribu ';
          end;
    Hitung := Hitung + 1;
    One    := One + 3;
    Two    := Two + 3;
    Three  := Three + 3;
  end;

  if length(Kata) > 1 then Kata := Kata + ' rupiah ';

  if (StrToInt(Sen) > 0) and (StrToInt(Sen) < 20) then
     begin
       if StrToInt(Sen) < 10 then Sen := Copy(Sen, 2, 1);
       Kata := Kata + Angka[StrToInt(Sen)+1] + ' sen';
     end
  else
     if StrToInt(Sen) > 19 then
        Kata := Kata + Angka[StrToInt(Sen1)+1] + 'puluh ' +
                Angka[StrToInt(Sen2)+1] + ' sen';
  Result := Kata;
end;
6 Comments

Leave a Reply