Function NuMtochar (const n: real): string; // can be tripled to us, and can expand a range
Const cnum: wideString = 'zero Zhai 叁 肆 伍 柒捌 - 万 仟 佰 佰 万 万 佰 佰 元;
Ccha: array [0..1, 0..12] of string =
(('Zero ",' Zero Picking ',' Zero ',' Zero ',' 10,000 ',' Zero ',' Billion ',' Zero Zero ',' Zero", 'Zero Wan ',' $ 100 million, 'billion', 'zero yuan'),
('Yuan', 'zero', 'zero', 'zero', '10 million ",' billion ',' zero ',' zero ',' 10 million, 'billion', 'billion', ' yuan'));
VAR i: integer;
Snum, STEMP: WIDESTRING;
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) 1] CNUM [i 13];
END;
For i: = 0 to 12 do
Result: = StringReplace (Result, CCHA [0, I], CCHA [1, I], [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;