Function NuMtochar (const n: real): string; // can be tripled to us, and can expand a range
Const cnum: array [0..9] of string = ('zero', '壹', '', '', '', 'Wu', 'Lu', '柒', '捌', '');
CUnit: array [0..14] of string = ('10,000', '仟', '', 'picking', 'billion', '仟', '', 'picking', '10,000', '仟 ',' ',' picking ',' yuan ',' angle ',' points';
VAR
i: integer;
Snum, STEMP: STRING;
Begin
Result: = '';
Snum: = format ('% 15d', [ROUND (N * 100)]);
For i: = 0 to 14 do
Begin
STEMP: = COPY (SNUM, I 1, 1);
If stemp = '' Then Continue
Else Result: = Result CNUM [STRTOINT (STEMP)] CUnit [i];
END;
/ / Remove extra zero
Result: = StringReplace (Result, 'Zero Bill', 'Bill', [RFREPLACEALL]);
Result: = StringReplace (Result, 'Zero Picking', 'Zero', [RFREPLACEALL]);
Result: = StringReplace (Result, 'Zero', 'Zero', [RFREPLACEALL]);
Result: = StringReplace (Result, 'zero ",' zero ', [RFREPLACEALL]);
Result: = StringReplace (Result, '万', '10,000 ", [RFREPLACEALL]);
Result: = StringReplace (Result, 'iodic', 'billion ", [RFREPLACEALL]);
Result: = StringReplace (Result, 'billion', 'billion ", [RFREPLACEALL]);
Result: = stringReplace (Result, 'zero zero', 'zero', [RFREPLACEALL]);
Result: = stringReplace (Result, 'zero ",' zero ', [RFREPLACEALL]);
Result: = StringReplace (Result, '万', '10,000 ", [RFREPLACEALL]);
Result: = StringReplace (Result, 'iodic', 'billion ", [RFREPLACEALL]);
Result: = StringReplace (Result, 'billion', 'billion ", [RFREPLACEALL]);
Result: = StringReplace (Result, 'Zero Bill', 'Bill', [RFREPLACEALL]);
IF POS ('zero ", result) = 0 Then Result: = StringReplace (Result,' zero angle ',' zero", [RFREPLACEAll])
Else Result: = StringReplace (Result, 'zero angle', 'whole', [RFREPLACEALL]);
Result: = StringReplace (Result, 'zero ",' ', [RFREPLACEALL]);
END;