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
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
0 komentar:
Posting Komentar