Sabtu, 17 Juli 2010

Function Of Numeric With Delphi

Judulnya agak nyentrik buat saya yang cuma memiliki kemampuan berbahasa inggris yes/no hahahha, ketahuan lagi deh..nggak bisa inggrisan, tapi harapan saya sedikit demi sedikit bisa bahasa inggris heheheh.
langsung ke topik pembicaraan "Function Of Numeric With Delphi" yang saya maksudkan disini adalah tidak lain adalah bagaimana kita membuat fungsi terbilang tetapi kali ini kita menggunakan bahasa sintaxnya Delphi sedangkan untuk link resminya delphi teman-teman bisa klik disini .

Fungsi terbilang yang saya buat ini lumayan sudah tua karena pada awal kami buat dahulu masih menggunakan delphi ver 5 bersama sahabat saya "Yafie Anak Kolong" tapi alhamdulillah fungsi ini banyak memberikan manfaat bagi saya dan rekan-rekan, pada kesempatan ini saya akan berikan kode ini kepada teman-teman delphier untuk dapat dikembangkan kembali atau untuk dimanfaatkan atau untuk menambah manfaat bagi teman-teman ya, kalau bagus mohon komentarnya tapi kalau jelek atau ada kemiripan dengan coding teman-teman mohon dimaafkan.

sebagai informasi tambahan fungsi yang kami buat ini telah dapat digunakan dalam 2 format mata uang yaitu indonesia (xxx.xxx,xx) dan inggris (xxx,xxx,xxx.00)

sintax source terbilang :

function Tfutil.konversi(karakter: string):string;
var i,a1,a2,a3 : integer; c,k,c1,c2,huruf : string; d : array [0..8] of char;

function satuan(angka : integer):string;
var kata : string;
begin
case angka of
0 : kata := '';
1 : kata := 'Satu';
2 : kata := 'Dua';
3 : kata := 'Tiga';
4 : kata := 'Empat';
5 : kata := 'Lima';
6 : kata := 'Enam';
7 : kata := 'Tujuh';
8 : kata := 'Delapan';
9 : kata := 'Sembilan';
end;
Result := kata;
end;

function puluhan(angka : integer):string;
var kata : string; a,b :integer;
begin
a := angka div 10;
b := angka - (a*10);
if a > 0 then
begin
if a = 1 then
begin
if b = 0 then
kata := 'Sepuluh'
else if b = 1 then
kata := 'Sebelas'
else
kata := satuan(b) + ' Belas';
end else
begin
kata := satuan(a)+' Puluh '+ satuan(b);
end;
end else
kata := satuan(angka);
Result := kata;
end;

function ratusan(angka : integer):string;
var kata : string; a,b :integer;
begin
a := angka div 100;
b := angka - (a*100);
if a > 0 then
begin
if a = 1 then
begin
kata := 'Seratus ' + puluhan(b)
end else
begin
kata := satuan(a)+' Ratus '+ puluhan(b);
end;
end else
kata := puluhan(angka);
Result := kata;
end;

function ribuan(angka : integer):string;
var kata : string; a,b :integer;
begin
a := angka div 1000;
b := angka - (a*1000);
if a > 0 then
begin
if a = 1 then
begin
kata := 'Seribu ' + ratusan(b)
end else
begin
kata := Ratusan(a)+' Ribu '+ Ratusan(b);
end;
end else
kata := Ratusan(angka);
Result := kata;
end;

function jutaan(angka : integer):string;
var kata : string; a,b :integer;
begin
a := angka div 1000000;
b := angka - (a*1000000);
if a > 0 then
begin
kata := Ratusan(a)+' Juta '+ Ribuan(b)
end else
kata := Ribuan(angka);
Result := kata;
end;

function milyardan(angka : integer):string;
var kata : string;
begin
if angka > 0 then
begin
kata := Ratusan(angka)+' Milyar'
end else
kata := '';
Result := kata;
end;

function trilyunan(angka : integer):string;
var kata : string; a,b :integer;
begin
a := angka div 1000;
b := angka - (a*1000);
if a > 0 then
begin
kata := Ratusan(a)+' Trilyun ' + milyardan(b);
end else
kata := milyardan(angka);
Result := kata;
end;

function koma(angka : string):string;
var kata : string; a,b : integer;
begin
kata := copy(angka,1,1);
a := strtoint(kata);
if a = 0 then
begin
kata := 'Nol'
end else
begin
kata := satuan(a);
end;
a := strtoint(angka);
b := a div 10;
a := a - (b * 10);
kata := kata + ' ' + satuan(a);
result := kata;
end;
begin
a1 := AnsiPos(',',trim(karakter));
a2 := AnsiPos('.',trim(karakter));
if ((a1 <> 0) or (a2<>0)) then
begin
if (a1 > a2) then
begin
k := copy(trim(karakter),1,a1-1);
c := '';
for i := 1 to length(k) do
begin
if k[i] <> '.' then c := c + k[i];
end;
if (length(karakter)-a1 > 1) then k := copy(trim(karakter),a1+1,2)
else
begin
k := copy(trim(karakter),a1+1,1);
k := k + '0';
end;
end else
begin
k := copy(trim(karakter),1,a2-1);
c := '';
for i := 1 to length(k) do
begin
if k[i] <> ',' then c := c + k[i];
end;
if (length(karakter)-a2 > 1) then k := copy(trim(karakter),a2+1,2)
else
begin
k := copy(trim(karakter),a2+1,1);
k := k + '0';
end;
end;
end else
begin
c:= karakter;
k := '00';
end;
if length(trim(c)) > 9 then
begin
a3 := length(c);
i :=0;
while i <=8 do
begin
d[8-i] := c[a3];
a3 := a3 - 1;
i := i + 1;
end;
for i := 0 to 8 do begin c2 :=c2+d[i];d[i]:=' ' ; end;
a3 := length(c)- 9;
while a3 > 0 do
begin
d[a3-1] := c[a3];
a3 := a3-1;
end;
for i := 0 to 8 do begin c1 := c1 + d[i];d[i]:=' '; end;
a1 := strtoint(trim(c1));
a2 := strtoint(trim(c2));
huruf := trilyunan(a1) +' '+ jutaan(a2);
end else
begin
a1 := strtoint(c);
huruf := jutaan(a1);
end;
if ((trim(k) <> '00') and (trim(k)<>'0')) then
begin
if huruf = '' then huruf := 'Nol Koma';
huruf := huruf +' Koma ' + koma(k);
end;
result := huruf;
end;




Selasa, 06 Juli 2010

Execute Storeprocedure SQL Server Express 2005 with C# - part 3


Ketemu lagi di Execute Storeprocedure SQL Server Express 2005 with C#, pada kesempatan ini penulis akan mencoba melanjutkan lagi hasil pembelajaran penulis dengan menggunakan C#, pada kesempatan ini silahkan buat desain form seperti gambar yang penulis sertakan pada artikel ini kemudian untuk dapat menjalankan aplikasi sederhana ini silahkan ketikkan source berikut :



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Data.SqlClient;
using System.Text;
using System.Windows.Forms;
//sertakan file uConnection
using GL.DataAkses;
using GL.ClassInputMaster;

namespace GL
{
public partial class fperkiraan : Form
{
ClassPerkiraan ClasPerkiraan = new ClassPerkiraan();

// buat variabel untuk pemanggil koneksi di file uConnection.cs
private SqlConnection conn;
string trans;
public fperkiraan()
{
InitializeComponent();
// deklarasikan + Buka koneksi
this.conn = uConnection.GetConnection();
} string cmdsqlGL;
Boolean Proses;
DataTable tperkiraanGL = new DataTable();

private void load_data()
{
tperkiraanGL.Clear();

cmdsqlGL = "Select noperk,perkiraan,gd,dk from tperkiraan where order by noperk";
SqlDataAdapter adapterPerkiraan = new SqlDataAdapter(cmdsqlGL,conn);
SqlCommandBuilder commandPerkiraan = new SqlCommandBuilder(adapterPerkiraan);
adapterPerkiraan.Fill(tperkiraanGL);
dgperkiraan.DataSource = tperkiraanGL;
dgperkiraan.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
dgperkiraan.Columns[0].HeaderText = "NO.PERKIRAAN";

dgperkiraan.Columns[1].HeaderText = "PERKIRAAN";
dgperkiraan.Columns[0].Width = 150;
dgperkiraan.Columns[1].Width = 300;
dgperkiraan.Columns[2].Width = 60;
dgperkiraan.Columns[3].Width = 60;
dgperkiraan.Columns[2].HeaderText = "G/D";
dgperkiraan.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
dgperkiraan.Columns[3].HeaderText = "D/K";
dgperkiraan.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

}

private void fperkiraan_Load(object sender, EventArgs e)
{
trans = "Baru";
WindowState = FormWindowState.Maximized;
lblproses.Text = "Penambahan data baru...";
try
{
load_data();
}
catch (SqlException err)
{
throw new Exception(err.Message.ToString());
}
finally
{
conn.Close();
}
}

private void txtcarinama_TextChanged(object sender, EventArgs e)
{
// untuk pencarian data
}

private void btnselesai_Click(object sender, EventArgs e)
{
Close();
}

private void kosong()
{
txtnoperk.Text = "";
txtnaperk.Text = "";
cbGD.Text = "General";
rodebet.Checked=true;
}

private void btntambah_Click(object sender, EventArgs e)
{
lblproses.Text = "Penambahan data baru...";
kosong(); trans = "Baru"; txtnoperk.ReadOnly = false; txtnoperk.Focus();
}

private void btsimpan_Click(object sender, EventArgs e)
{
string _idbook = txtnoperk.Text;
if (txtnoperk.Text == "")
{
MessageBox.Show("Pengisian tidak lengkap!!!");
btntambah_Click(sender, e);
}
else
{
try
{
string GD, DK;
if (cbGD.Text == "General")
{
GD = "G";
}
else
{
GD = "D";
}
if (rodebet.Checked == true)
{
DK = "D";
}
else
{
DK = "K";
}
if (trans=="Edit" || trans=="Baru")
{
ClasPerkiraan.spAdd(trans.ToString(), txtnoperk.Text.ToString(), txtnaperk.Text.ToString(), GD.ToString(), DK.ToString());
}

load_data();
}
catch (Exception err)
{
MessageBox.Show("Gagal menyimpan data");
}
finally
{
btntambah_Click(sender, e);
}
}
}

private void btnhapus_Click(object sender, EventArgs e)
{

DialogResult result = MessageBox.Show("Anda Yakin akan menghapus perkiraan : " + dgperkiraan.Rows[dgperkiraan.CurrentCellAddress.Y].Cells["perkiraan"].Value.ToString(), "Peringatan", MessageBoxButtons.YesNo);
if (result == DialogResult.No)
{
btntambah_Click(sender, e);
}
else
{
string no = dgperkiraan.Rows[dgperkiraan.CurrentCellAddress.Y].Cells["noperk"].Value.ToString();
ClasPerkiraan.spAdd("Hapus",no.ToString(),"","","");
tperkiraanGL.Clear();
load_data();
}
}

private void btnperbaiki_Click(object sender, EventArgs e)
{
string nobookmark;
try
{
if (dgperkiraan.Rows[dgperkiraan.CurrentCellAddress.Y].Cells["noperk"].Value.ToString() != "")
{
nobookmark = dgperkiraan.Rows[dgperkiraan.CurrentCellAddress.Y].Cells["noperk"].Value.ToString();

txtnoperk.Text = dgperkiraan.Rows[dgperkiraan.CurrentCellAddress.Y].Cells["noperk"].Value.ToString();
txtnaperk.Text = dgperkiraan.Rows[dgperkiraan.CurrentCellAddress.Y].Cells["perkiraan"].Value.ToString();
if (dgperkiraan.Rows[dgperkiraan.CurrentCellAddress.Y].Cells["GD"].Value.ToString() == "G")
{
cbGD.Text = "General";
}
else
{
cbGD.Text = "Detail";
}
if (dgperkiraan.Rows[dgperkiraan.CurrentCellAddress.Y].Cells["dk"].Value.ToString() == "D")
{
rodebet.Checked = true;
}
else
{
rokredit.Checked = true;
}
trans = "Edit";
txtnoperk.ReadOnly = true;
trans = "Edit"; lblproses.Text = "Perbaikan data...";
txtnaperk.Focus();
}
else
{
MessageBox.Show("data tidak ada");
}
}
catch
{
MessageBox.Show("Data tidak ada");
}
}

private void btncetak_Click(object sender, EventArgs e)
{


//untuk menampilkan data dalam mode report
}

private void txtnoperk_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 13)
{
// buat class untuk pencarian data yang pernah di isi disini
}
else
{
txtnaperk.Focus();
}
}
}
}
private void konfirmasi()
{
string pesan = "Simpan data?";
string judul = "Konfirmasi";
MessageBoxButtons tombol = MessageBoxButtons.OKCancel;
DialogResult result;
result = MessageBox.Show(pesan, judul, tombol);
if (result == System.Windows.Forms.DialogResult.OK)
{
Proses = true;
}
else
{
Proses = false;
}
}

}
}

Mudah-mudahan hasil pembelajaran penulis ini juga dapat memberikan manfaat bagi teman-teman yang juga sama dengan penulis dalam mempelajari C#, serta tidak lupa penulis ucapkan beribu-ribu maaf kalau artikel ini masih jauh dari sempurna

Execute Storeprocedure SQL Server Express 2005 with C# - part 2

Ada baiknya kita menyusun data-data ataupun script program yang kita buat dengan C#, hal ini untuk mempermudah kita dalam penyusunan struktur dari program yang akan kita buat dan memudahkan kita dalam perawatan/maintanance. Berhubungan dengan contoh aplikasi yang penulis buat sesuai dengan judul diatas, maka penulis mencoba untuk memilah program yang diantaranya :
1. File uConnection.cs yang penulis letakkan dalam folder DataAkses, file ini nantinya berfungsi untuk penghubung antara database dengan C#, berikut contoh sourcenya :
using System;
using System.Collections.Generic;
using System.Data.SqlClient;

namespace GL.DataAkses
{
public class uConnection
{
public static SqlConnection GetConnection()
{
string conGL = @"server=CENK26-PC\SQLEXPRESS;integrated security=true;database=GL_C#";
SqlConnection conn = new SqlConnection(conGL);
conn.Open();
return conn;
}
}
}


2. Selanjutnya kita buat Class yang berfungsi untuk proses transaksi yang berhubungan dengan tabel perkiraaan yang penulis coba kombinasikan dengan storeprocedure SQL SERVER 2005 EXPRESS, untuk kebutuhan ini penulis meletakkan file class ini didalam folder " ClassInputMaster " dengan nama file ClassPerkiraan.cs, sedangkan sourcenya adalah sebagai berikut :

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Text;
using System.Windows.Forms;
using GL.DataAkses;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Data;

namespace GL.ClassInputMaster
{
public class ClassPerkiraan
{
private SqlConnection conn;
private string idnoperk;
private string idnaperk;
private string idgd;
private string iddk;
private string keterangan { get; set; }

#region ClassPerkiraan property
public string idNoperk
{
get { return idnoperk; }
set { idnoperk = value; }
}

public string idNaperk
{
get { return idnaperk; }
set { idnaperk = value; }
}

public string idGd
{
get {return idgd;}
set {idgd=value;}
}
public string idDk
{
get { return iddk; }
set { iddk = value; }
}

#endregion
public ClassPerkiraan()
{
}



///class store procedure
/// untuk MASRER PERKIRAAN UTAMA
public string spAdd(string tr, string no, string na, string gd, string dk, string th)
{
this.conn = uConnection.GetConnection();
SqlCommand spAdd = new SqlCommand();
spAdd.Connection = conn;
spAdd.CommandText = "sp_perkiraan";
spAdd.CommandType = CommandType.StoredProcedure;
SqlParameter tran = new SqlParameter("@transaksi", SqlDbType.VarChar);
SqlParameter noperk = new SqlParameter("@noperk", SqlDbType.Char);
SqlParameter naperk = new SqlParameter("@naperk", SqlDbType.VarChar);
SqlParameter Gd = new SqlParameter("@gd", SqlDbType.Char);
SqlParameter Dk = new SqlParameter("@dk", SqlDbType.Char);
tran.Value = tr;
noperk.Value = no;
naperk.Value = na;
Gd.Value = gd;
Dk.Value = dk;

spAdd.Parameters.Add(tran);
spAdd.Parameters.Add(noperk);
spAdd.Parameters.Add(naperk);
spAdd.Parameters.Add(Gd);
spAdd.Parameters.Add(Dk);

spAdd.ExecuteNonQuery();
conn.Close();
return spAdd.ToString();
}
}
}

3. Selanjutnya kita tinggal coba jalankan storeprocedure yang telah kita buat di SQL SERVER 2005 EXPRESS dipart 1 dengan Class yang telah kita buat di Part 2 sebelumnya... yang kita lanjutkan di Execute Storeprocedure SQL Server Express 2005 with C# - part 3

Minggu, 04 Juli 2010

Execute Storeprocedure SQL Server Express 2005 with C# - part 1

Jumpa lagi dengan saya, kali ini saya akan membahas topik yang baru aja saya pelajari, dan ingin menuliskan diblog ini dengan harapan nantinya dapat memberikan manfaat buat teman-teman yang kebetulan baru belajar di C# sepertii saya.
Banyak literatur yang menjelaskan bagaimana mengkoneksikan database SQL SERVER EXPRESS 2005 jangan lupa sebelumnya download juga SQLServer2005_SSMSEE.msi untuk memudahkan anda mengoperasikan SQL Server Express 2005 dengan C# dengan berbagai tehnik dan cara, untuk kali ini saya akan mencoba menjalankan storeprocedure yang dipanggil dengan C#.
Sebelumnya silahkan anda buat database sesuai yang diinginkan dengan SQL server Express 2005, sebagai contoh saya membuat database dengan nama GL_C#, kemudian tambahkan tabel seperti contoh berikut :

CREATE TABLE [dbo].[tperkiraan](
[noperk] [char](20) NOT NULL,
[perkiraan] [varchar](50) NULL,
[gd] [char](1) NOT NULL CONSTRAINT [DF_tperkiraan_gd] DEFAULT ('G'),
[dk] [char](1) NOT NULL CONSTRAINT [DF_tperkiraan_dk] DEFAULT ('D'),
CONSTRAINT [PK_tperkiraan] PRIMARY KEY CLUSTERED
(
[noperk] ASC
)ON [PRIMARY]
)

Selanjutnya silahkan buat satu storeprocedure seperti berikut :

CREATE PROCEDURE [dbo].[sp_perkiraan]
@noperk char(20),
@naperk varchar(50),
@gd char(1),
@dk char(1)
@transaksi varchar(20)
AS
BEGIN
if @transaksi='Baru'
begin
Insert Into tperkiraan(noperk,perkiraan,gd,dk)
Values(@noperk,@naperk,@gd,@dk)
end
if @transaksi='Hapus'
begin
delete from tperkiraan where noperk=@noperk
end
if @transaksi='Edit'
begin
Update tperkiraan set perkiraan=@naperk, gd=@gd,dk=@dk
where noperk=@noperk
end
END

Oke untuk selanjutnya untuk koneksi dari C# silahkan buka artikel Execute Storeprocedure SQL Server Express 2005 with C# - part 2

Sabtu, 03 Juli 2010

Fungsi Konversi Terbilang C#

Sudah lama sekali rasanya tidak memiliki semangat untuk belajar sesuatu yang baru mungkin dikarenakan kesibukan dan juga mungkin umur yang sudah mulai beranjak tua (hahahahahaa baru sadar sudah tidak muda lagi).

Langsung aja, kemarin iseng-iseng bongkar-bongkar kode-kode program lamaku dulu, salah satunya program "konversi terbilang" yang dulu saya buat dengan delphi ver 5 dan buat teman-teman delphier sekarang website resminya kalau nggak salah http://www.embarcadero.com, sebelumnya penulis mohon maaf karena sebetulnya ini adalah materi/topik yang sudah kadaluarsa bagi rekan-rekan programmer.

Ada perasaan pengen tahu aja apakah penulisan program yang dibuat penulis waktu jaman jadul bisa diterapkan dalam jaman sekarang akhirnya penulis mencoba mempelajari bahasa pemrograman yang penulis amati sedang beken saat ini " VISUAL STUDIO - C# " yang kalau tidak salah dikembangkan oleh Microsoft,.

Kembali ke konversi bilangan tadi, ternyata memang dari segi logika mungkin teman-teman bilang algoritma alur dalam bahasa delphi dengan bahasa pemrograman yang lain tidaklah berbeda yang membedakan hanyalah sintak dari masing-masing program tersebut.

Mungkin penulis akan memaparkan sekelumit dari contoh code program yang penulis buat menggunakan C# seperti hasil contoh didalam gambar diatas. Akan tetapi penulis mohon maaf apabila banyak kekurangannya karena untuk saat ini penulispun baru mempelajari C# tersebut ibarat bayi masih belajar merangkak...


using System;
using System.Collections.Generic;
using System.Text;

namespace cenkDll
{
public class fungsibilangan
{
string c1, c2, huruf, c;
char[] d;
public string C
{
set { this.c = value; }
get { return this.c; }
}

public string C1
{
set { this.c1 = value; }
get { return this.c1; }
}

public string C2
{
set { this.c2 = value; }
get { return this.c2; }
}

public string Huruf
{
set { this.huruf = value; }
get { return this.huruf; }
}

public string konversi(string karakter)
{
int i,a1,a2,a3;
string k,potong;
a1 = karakter.IndexOf(',');
a2 = karakter.IndexOf('.');
i = 0;
if ((a1 != 0) || (a2 != 0))
{
if (a1 > a2)
{
k = karakter.Substring(0, a1);
c = "";
for (i = 0; i < potong =" k.Substring(i," c =" c"> 1)
{
k = karakter.Substring(a1 + 1, 2);
}
else
{
k = karakter.Substring(a1 + 1, 1);
k = k + "0";
}
}
else
{
k = karakter;
c = "";
for (i = 0; i != k.Length; i++)
{
potong = k.Substring(i, 1);
if (potong != ",")
{
c = c + potong;
}
}
if ((k.Length) - a2 > 1)
{
k = karakter.Substring(a2 + 1, 2);
}
else
{
k = karakter.Substring(a2 + 1, 1);
k = k + "0";
}
}
}
else
{
c = karakter;
k = "00";
}

if (c.Length > 9)
{
a3 = c.Length;
i = 0;
while (i <= 8) { d[8 - i] = c[a3]; a3 = a3 - 1; i++; } for (i = 0; i <= 8; i++) { a3 = c.Length - 9; while (a3 > 0)
{
d[a3 - 1] = c[a3];
a3 = a3 - 1;
}
}
for (i = 0; i <= 8; i++) { c1 = c1 + d[i]; a1 = Int32.Parse(c1); a2 = Int32.Parse(c2); huruf = trilyunan(a1)+" "+jutaan(a2); } } else { a1 = Int32.Parse(c); huruf = jutaan(a1); } if ((k.Trim() != "00") & (k.Trim() != "0")) { if (huruf == "") { huruf = "Nol Koma"; huruf = huruf + " Koma " + koma(k); } } return huruf; } private string trilyunan(int angka) { string kata; int a, b; a = angka % 1000; b = (angka - a) / 1000; kata = ""; if (b > 0)
{
kata= ratusan(b)+" Trilyun "+ milyaran(a);
}
else
{
kata=milyaran(angka);
}
return kata;
}

private string milyaran(int angka)
{
string kata;
kata = " ";

if (angka > 0)
{
kata = ratusan(angka) + " Milyar";
}
else
{
kata = " ";
}
return kata;
}

private string jutaan(int angka)
{
string kata;
int a, b;
a = angka % 1000000;
b = (angka - a) / 1000000;
kata = " ";
if (b > 0)
{
kata = ratusan(b) + " Juta " + ribuan(a);
}
else
{
kata = ribuan(angka);
}
return kata;

}

private string ribuan(int angka)
{
string kata;
int a, b;
a = angka % 1000;
b = (angka - a) / 1000;
kata = " ";
if (b > 0)
{
if (b == 1)
{
kata = "Seribu " + ratusan(a);
}
else
{
kata = ratusan(b) + " Ribu " + ratusan(a);
}
}
else
{
kata = ratusan(angka);
}
return kata;
}

private string ratusan(int angka)
{
string kata;
int a, b;
a = angka % 100;
b = (angka - a) / 100;
kata = " ";
if (b > 0)
{
if (b == 1)
{
kata = "Seratus " + puluhan(a);
}
else
{
kata = satuan(b) + " Ratus " + puluhan(b);
}
}
else
{
kata = puluhan(angka);
}
return kata;
}

private string puluhan(int angka)
{
string kata;
int a, b;
a = angka % 10;
b = (angka - a) / 10;
kata = " ";
if (b > 0)
{
if (b == 1)
{
if (a == 0)
{
kata = "Sepuluh";
}
else
{
if (a == 1)
{
kata = "Sebelas";
}
else
{
kata = satuan(a) + " Belas";
}
}
}
else
{
kata = satuan(b) + " Puluh " + satuan(a);
}
}
else
{
kata = satuan(angka);
}
return kata;
}


private string satuan(int angka)
{
string kata;
kata = "";
switch (angka)
{
case 0: kata="";break;
case 1: kata="Satu";break;
case 2: kata="Dua";break;
case 3: kata="Tiga";break;
case 4: kata="Empat";break;
case 5: kata="Lima";break;
case 6: kata="Enam";break;
case 7: kata="Tujuh";break;
case 8: kata="Delapan";break;
case 9: kata="Sembilan";break;
}
return kata;
}

private string koma(string angka)
{
string kata;
kata = "";
int a, b;
kata = angka.Substring(0,1);
a = Int32.Parse(kata);
if (a == 0)
{
kata = "Nol";
}
else
{
kata = satuan(a);
}
a = Int32.Parse(angka);
b = a % 10;
a = (Int32.Parse(angka) - b) / 10;
kata=kata+" "+satuan(a);
return kata;
}
}





Demikian kira-kira dari fungsi konversi terbilang yang penulis coba implementasikan didalam C#, mohon maaf sebelumnya mungkin fungsi ini belum terlalu sempurna, untuk kesempurnaan teman-teman dapat melengkapinya , dan penulis informasikan bahwa fungsi konversi ini sudah dapat mendeiteksi format penulisan digit versi indonesia (xxx.xxx.xxx) ataupun versi inggris (xxx,xxxx,xxx), terimakasih