Ini dari "gudang" pc ane, semoga bisa membantu. Silahkan dibenahi dan dikembangkan sendiri, soalnya ini masih agak kacau

lom sempat benerin

Jangan lupa kalo sudah jadi, laporannya dibawa ke sini yak
unit UBacanilai;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
Label2: TLabel;
Memo1: TMemo;
procedure Edit1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
jml :integer;
ang : array[0..12] of integer;
angka : set of char;
const
no : array[2..9] of string[10]=('dua ','tiga ','empat ','lima ','enam ',
'tujuh ','delapan ','sembilan ');
implementation
{$R *.DFM}
function baca(angka :string):string;
var terbilang:string;
c1,a : byte;
an : char;
l:integer;
begin
for c1:=1 to length(angka) do
begin
terbilang:='';
an:=angka[c1];
ang[c1]:=strtoint(an);
jml:=c1;
a:=length(angka);
for l:=1 to a do begin
case ang[l] of
0 : no[ang[l]]:='';
1 : begin
if ((jml=1) and (ang[l-1]<>1)) or ((jml=4) and (ang[l-1]<>1) and
(a>4) and (ang[l-2]<>0)) or ((jml=7) and (ang[l-1]<>1) and
(a>=7)) or ((jml=10) and (ang[l-1]<>1) and
(a>=10)) then no[ang[l]]:='satu ' else no[ang[l]]:='se';
end;
end;
// awal
Case jml of
1,4,7,10,13 :
begin
{ satuan }if (ang[l-1]=1) and (jml=1) and (ang[l]<>0) then
terbilang:=terbilang+no[ang[l]]+'belas ' else if jml=1 then terbilang:=terbilang+no[ang[l]];
{ ribuan }if (ang[l-1]=1) and (jml=4) and (ang[l]<>0) then
terbilang:=terbilang+no[ang[l]]+'belas ribu ' else if (jml=4) and
((ang[l]<>0) or (ang[l-1]<>0) or (ang[l-2]<>0)) then
terbilang:=terbilang+no[ang[l]]+'ribu ' else if jml=4 then terbilang:=terbilang+no[ang[l]];
{ juta } if (ang[l-1]=1) and (jml=7) and (ang[l]<>0) then
terbilang:=terbilang+no[ang[l]]+'belas juta ' else if (jml=7) and
((ang[l]<>0) or (ang[l-1]<>0) or (ang[l-2]<>0)) then
terbilang:=terbilang+no[ang[l]]+'juta ' else if jml=7 then terbilang:=terbilang+no[ang[l]];
{ milyar }if (ang[l-1]=1) and (jml=10) and (ang[l]<>0) then
terbilang:=terbilang+no[ang[l]]+'belas milyar ' else if jml=10 then
terbilang:=terbilang+no[ang[l]]+'milyar ';
{ triliun }{if (ang[l-1]=1) and (jml=13) and (ang[l]<>0) then
terbilang:=terbilang+no[ang[l]]+'belas triliun ' else if jml=13 then
terbilang:=terbilang+no[ang[l]]+'ribu ';}
end;
2,5,8,11 :
begin
{puluhan} if (ang[l]=1) and (ang[l+1]>0) then terbilang:='' else
if ang[l]<>0 then terbilang:=terbilang+no[ang[l]]+'puluh ' else
terbilang:=terbilang+no[ang[l]];
end;
3,6,9,12 :
begin
{ratusan} if (ang[l]<>0) then terbilang:=terbilang+no[ang[l]]+'ratus ' else
terbilang:=terbilang+no[ang[l]];
end;
end;
dec(jml,1);
// batas
end; // for...
end;
// form1.memo1.text:=huruf;
result := terbilang;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
memo1.text:=baca(Edit1.Text)+' rupiah';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;
end.