Terbilang Dalam Bahasa Indonesia Dengan Delphi
Dalam pemrograman kita sering dihadapkan keperluan merubah angka dalam bentuk terbilang, misalnya dalam kuitantasi atau mungkin untuk keperluan lain. Berikut adalah fungsi terbilang yang telah saya buat. Fungsi ini bisa menangani angka dengan koma misalnya 100,02
Unit Untuk Membuat Terbilang Dalam Bahasa Delphi(Pascal) dari inputan yg berupa angka.
Fungsi untuk merubah ke dalam Tulisan rupiah adalah
function ConvToRupiah(inp: string): string;
Dalam Fungsi ini menggunakan 2 fungsi lain yaitu
1. function getRatusan(inp: string;Index: integer;High: integer): string;
2. function terbilang2(inp: string): string;
Berikut Adalah unit tersebut
unit UBantuan;
interface
uses Messages, SysUtils, Variants, Classes, Graphics, Controls, Dialogs, StdCtrls;
function ConvToRupiah(inp: string): string;
implementation
function getRatusan(inp: string;Index: integer;High: integer): string;
var s,S2:integer;
temp,Ratus,puluh,satuan : string;
j : integer;
begin
S2:=strtoint(copy(inp,2,2));
S:=strtoint(inp[1]);
case s of
1: Ratus := 'seratus';
2: Ratus := 'dua ratus';
3: Ratus := 'tiga ratus';
4: Ratus := 'empat ratus';
5: Ratus := 'lima ratus';
6: Ratus := 'enam ratus';
7: Ratus := 'tujuh ratus';
8: Ratus := 'delapan ratus';
9: Ratus := 'sembilan ratus';
end;
if (s2<> 9) then
begin
case s2 of
10: Temp := 'Sepuluh';
11: temp := 'sebelas';
12: temp := 'dua belas';
13: temp := 'diga belas';
14: temp := 'empat belas';
15: temp := 'lima belas';
16: temp := 'enam belas';
17: temp := 'tujuh belas';
18: temp := 'delapan belas';
19: temp := 'sembilan belas';
end;
end
else
begin
case strtoint(inp[2]) of
2: puluh:= 'dua puluh';
3: puluh:= 'tiga puluh';
4: puluh:= 'empat puluh';
5: puluh:= 'lima puluh';
6: puluh:= 'enam puluh';
7: puluh:= 'tujuh puluh';
8: puluh:= 'delapan puluh';
9: puluh:= 'sembilan puluh';
end;
case strtoint(inp[3]) of
// 0: Satuan := 'nol';
1: begin
j:= Index;
if(strtoint(Inp)=1)and (j=2) then
Satuan := 'se'
else
satuan:= 'satu';
end;
2: Satuan := 'dua';
3: Satuan := 'tiga';
4: Satuan := 'empat';
5: Satuan := 'lima';
6: Satuan := 'enam';
7: Satuan := 'tujuh';
8: Satuan := 'delapan';
9: Satuan := 'sembilan';
end;
temp:= puluh + ' '+satuan;
end;
result:= Ratus+' '+ TrimLeft(temp);
end;
function terbilang2(inp: string): string;
var a,b,c : integer;
temp,angka,tb,inp2,ratus : string;
I,idx,l,l2: Integer;
AAngka: array of string;
say: array[1..14]of string ;
begin
say[1]:='';
say[2]:=' ribu';
say[3]:=' juta';
say[4]:=' milyar';
say[5]:=' triliun';
say[6]:=' biliun';
say[7]:=' mega biliun';
say[8]:=' giga biliun';
say[8]:=' tera biliun';
say[9]:=' mega tera biliun';
say[10]:=' giga tera biliun';
say[11]:=' tera tera biliun';
say[12]:=' mega tera tera biliun';
say[13]:=' giga tera tera biliun';
say[14]:=' tera tera tera biliun';
inp2:= INp;
if length(inp2)mod 3<>0 then
case length(inp2)mod 3 of
1: Inp2:= '00'+inp;
2: Inp2:= '0'+inp;
end;
setlength(aangka,length(inp2)div 3);
idx:=1;
for I := 0 to (length(inp2)div 3)-1 do
begin
Aangka[i]:= copy(inp2,idx,3);
inc(idx,3);
end;
L:= High(aAngka)+1;
L2:=L;
for i := low(aAngka) to High(aAngka)do
begin
Ratus:= getRatusan(Aangka[i],l,l2);
if (Trim(Ratus)='se') and (L=2) then
Temp:=Temp+' '+trim(Ratus)+ Trim(Say[L2-i])
else
if trim(Ratus)<>'' then
Temp:=Temp+' '+Ratus+ Say[L2-i];
dec(l);
end;
result:= Trim(temp);
end;
function ConvToRupiah(inp: string): string;
var a,b,c,Poskoma,PosTitik : integer;
temp,angka,dpnKoma,BlkKoma : string;
AdaKoma: boolean;
begin
PosKoma:= pos(',',Inp);
PosTitik:= pos('.',Inp);
if (Poskoma<>0) or (posTitik<> 0) then
begin
adaKoma:= true;
if PosKoma= 0 then posKoma:= PosTitik;
end
else
begin
adakoma:= False;
DpnKoma:= inp;
end;
if adakoma then
begin
dpnkoma:= copy(inp,1,posKoma-1);
blkKoma:= Copy(inp,posKoma+1,length(inp)-posKoma);
if trim(DpnKoma)='0' then
temp:= 'nol'+ ' koma ' + terbilang2(blkKoma)
else
temp:= terbilang2(dpnKoma)+ ' koma ' + terbilang2(blkKoma);
end
else
begin
temp:=terbilang2(dpnKoma);
end;
Result:= temp +' rupiah';
end;
end.
Untuk menggunakan Fungsi tersebut sbb:
Hasil adalah variable dengan type String
Hasil:=ConvToRupiah('100,01');
1 Comments:
At March 31, 2009 at 2:56 PM ,
Anonymous said...
Bagi Temen2 yg Ingin Share Silahkan Kasih Commentnya.
Post a Comment
Subscribe to Post Comments [Atom]
<< Home