01.
Local stringVar array D:= [
""
,
"สิบ"
,
"ร้อย"
,
"พัน"
,
"หมื่น"
,
"แสน"
];
02.
Local stringVar array e:= [
"หนึ่ง"
,
"สอง"
,
"สาม"
,
"สี่"
,
"ห้า"
,
"หก"
,
"เจ็ด"
,
"แปด"
,
"เก้า"
];
03.
Local stringVar array Mn;
04.
Local stringVar array Ar1;
05.
Local stringVar Arr;
06.
Local numberVar F;
07.
Local numberVar R;
08.
Local numberVar j;
09.
Local numberVar k;
10.
Local numberVar u;
11.
Local numberVar j2;
12.
Local stringVar Bh;
13.
Local numberVar F2;
14.
Local numberVar j3;
15.
Local numberVar u1;
16.
Local numberVar m3;
17.
Local stringVar Bh3;
18.
//แบ่งจำนวนเต็มและทศนิยมออกจากกัน แล้วเก็บในตัวแปรอาร์เรย์ sm
19.
Ar1:=Split (
CStr
({ชื่อตาราง.ชื่อฟิลด์},2,
""
),
"."
);
20.
//นำจำนวนเต็มมาแบ่งตัวเลขออกชุดละหกหลัก ในที่นี้ใช้กับจำนวนหลักสูงสุด 18 หลัก แต่ละชุดที่แบ่งใช้ตัอักษร : คั่น
21.
F:=Len(Ar1[1]);
22.
If
F<=6 then Arr:=Ar1[1];
23.
If
F>6 and F<=12 then Arr:=Left(Ar1[1],Len(Ar1[1])-6)+
":"
+Right(Ar1[1],6);
24.
If
F>12 and F<=18 then Arr:=Left(Ar1[1],Len(Ar1[1])-12)+
":"
+Mid(Ar1[1],F-12+1,6)+
":"
+Right(Ar1[1],6);
25.
//จากนั้นให้มาแยกและเก็บในตัวแปรอาร์เรย์ Mn
26.
Mn:=Split(Arr,
":"
);
27.
//แล้วนำตัวเลขในแต่ละชุดมาสร้างข้อความค่าของเงิน เริ่มจากชุดหลักที่มากที่สุด
28.
For
j2:=1 to UBound (Mn) do (
29.
//เริ่มสร้างข้อความค่าของเงินในแต่ละชุดตัวเลข
30.
F2:=Len(Mn[j2]);
31.
//สำหรับตัวเลขสองเป็นยี่ และหลักสิบที่ไม่มีหน่วย
32.
For
j:= 1
To
F2 do (
33.
If
Mid(Mn[j2],j,1)=
"2"
And
F2+1-j=8
Then
e[2]:=
"ยี่"
;
34.
If
Mid(Mn[j2],j,1)=
"1"
And
F2+1-j=8
Then
e[1]:=
""
;
35.
If
Mid(Mn[j2],j,1)=
"2"
And
F2+1-j=2
Then
e[2]:=
"ยี่"
;
36.
If
Mid(Mn[j2],j,1)=
"1"
And
F2+1-j=2
Then
e[1]:=
""
;
37.
If
Mid(Mn[j2],j,1)=
"1"
And
F2+1-j=1
Then
e[1]:=
"เอ็ด"
;
38.
//สร้างข้อความค่าของเงิน
39.
For
R:= 1
To
9 do (
40.
u:= Val(Mid (Mn[j2],j,1));
41.
If
u = R
Then
Bh:= Bh+e[R]+D[F2+1-j];
42.
);
43.
//เปลี่ยนหน่วย ยี่ มาเป็นสอง หลักสิบเป็นหนึ่ง เพื่อใช้ในชุดต่อไป
44.
e[2]:=
"สอง"
;
45.
e[1]:=
"หนึ่ง"
;
46.
);
47.
//สำหรับชุดตัวเลขที่มากกว่าหนึ่งชุด จะต้องเติมคำว่า ล้าน
48.
If
j2 <> Ubound(Mn)
Then
Bh:= Bh+
"ล้าน"
;
49.
Mn[j2]:=Bh;
50.
Bh:=
""
;
51.
);
52.
//มาสร้างข้อความค่าเงิน สำหรับจุดทศนิยม ด้วยวิธีเดียวกันกับจำนวนเต็ม
53.
For
j3:=1
To
2 do(
54.
If
Mid(Ar1[2],j3,1) =
"2"
And
j3=1
Then
e[2]:=
"ยี่"
;
55.
If
Mid(Ar1[2],j3,1) =
"1"
And
j3=1
Then
e[1]:=
""
;
56.
If
Mid(Ar1[2],j3,1) =
"1"
And
j3=2
Then
e[1]:=
"เอ็ด"
;
57.
For
m3:=1
To
9 do (
58.
u1:=Val(Mid(Ar1[2],j3,1));
59.
If
u1=m3
Then
Bh3:=Bh3+e[m3]+D[3-j3];
60.
);
61.
e[2]:=
"สอง"
;
62.
e[1]:=
"หนึ่ง"
;
63.
);
64.
//รวมข้อความค่าของเงินที่จำนวนเต็มและทศนิยม
65.
If
Mn[1]<>
""
and Bh3<>
""
then
66.
Join (Mn,
""
)+
"บาท"
+Bh3+
"สตางค์"
67.
Else
if Mn[1]<>
""
and Bh3=
""
then
68.
Join (Mn,
""
)+
"บาทถ้วน"
69.
Else
If
Mn[1]=
""
and Bh3<>
""
then
70.
Bh3+
"สตางค์"
71.
Else
72.
""