Huruf terbilang di curency

Posted by

Delphi        : –
Naaahhh lama tidak tulis-tulis saatnya iseng lagi, haha
Kali ini saya akan memberikan fungsi terbilang, apa sih itu?? pasti udah pada tahukan ya fungsi ini untuk menampilkan terbilang dari sebuah nominal yang kita inputkan, contoh pada kuitansi, untuk penerapanya sialhakan saja suka suka kita, bisa pada bukti pembayaran, nota, faktur atau apalah sesuaikan dengan aplikasi yang kita buat.
Sebenarnya kuno sih, sudah banyaak tutorial seperti ini bahkan saya sendiri mendapatkanya dari googling sudah lama sampai lupa mana sumbernya kalau ada yang mengklaim kode ini silahkan, pasti akan saya tambahkan sebagai sumber dan kalau keberatan akan saya hapus posting ini, pada tulisan ini kodenya pun tidak saya rubah, walaupun kuno tapi ga apalah untuk melengkapi tulisan sekaligus buat belajar bagi yang membutuhkan.
Kita hanya memerlukan fungsi berikut dibawah ini , taroh di bawah implementation :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
implementation
 
function terbilang(dNumber: Extended): string;
const
 aNum: array[1..9] of String = ('satu', 'dua', 'tiga', 'empat', 'lima', 'enam', 'tujuh', 'delapan', 'sembilan');
 aUnit: array[1..5] of String = ('trilyun', 'milyar', 'juta', 'ribu', '');
var
 iCount, iDigit1, iDigit2, iDigit3: Integer;
 sNum2Str, s3Digit, sWord: string;
begin
 
Result := '';
 if (dNumber=0) then Exit;
 sNum2Str:=Copy(Format('%18.2f', [dNumber]), 1, 15);
 for ICount:=1 to 5 do
 begin
 s3Digit:=Copy(sNum2Str, iCount*3-2, 3);
 if (StrToIntDef(s3Digit, 0)<>0) then
 begin
 sWord:='';
 iDigit1:=StrToIntDef(Copy(s3Digit, 1, 1), 0);
 iDigit2:=StrToIntDef(Copy(s3Digit, 2, 1), 0);
 iDigit3:=StrToIntDef(Copy(s3Digit, 3, 1), 0);
 case iDigit1 of
 2..9: sWord:=sWord+aNum[iDigit1]+' ratus ';
 1: sWord:=sWord+'seratus ';
 end; { case }
 
case iDigit2 of
 2..9: sWord:=sWord+aNum[iDigit2]+' puluh ';
 1: case iDigit3 of
 2..9: sWord:=sWord+aNum[iDigit3]+' belas ';
 1: sWord:=sWord+'sebelas ';
 0: sWord:=sWord+'sepuluh ';
 end; { case }
 end; { case }
 
if (iDigit2<>1) then
 case iDigit3 of
 2..9: sWord:=sWord + aNum[iDigit3] + ' ';
 1: if (iCount=4) and ((iDigit1+iDigit2)=0) then
 sWord:=sWord+'se'
 else
 sWord:=sWord+'satu ';
 end;
 Result:=Result+sWord+aUnit[iCount]+' ';
 end;
end;
while Result[Length(Result)]=' ' do
SetLength(Result, Length(Result)-1);
end;
Setelah itu saya telah membuat form sederhana, yang berisi 1 Edit, 1 Memo dan 1 Button yang berada di palete Standatrd semua, setelah membuat fungsi diatas maka pada tombol (Button) saya sisipkan kode ini
1
2
3
4
procedure TForm1.btn1Click(Sender: TObject);
begin
mmo1.Text:=terbilang(StrToFloatDef(edt1.Text,0));
end;
Keterangan : Karena fungsi membutuhkan inputan numeric maka saya konfersiStrToIntDef(edt1.Text,0), StrToIntDef maksutnya memberikan nilai default NOL jika format tidak bisa di konfersi menjadi integer alias untuk mencegah error
Setelah itu bisa kita lihat hasilnya tampak seperti pada gambar dibawah ini

terbilang-01
Nah sangat simple dan mudah, untuk implementasinya tidak harus selalu lewat tombol bisa kita modifikasi sesuai selera, tidak hanya di tampilkan di memo bisa kita gunakan di report atau lain sebaginya, semoga bermanfaat.
Terimkasih kepada pembuat fungsi ini


Demo Blog NJW V2 Updated at: 17.14

0 komentar:

Posting Komentar

Text Widget

Popular Posts