Los números de programación de Delphi generan automáticamente números chinos
Si simplemente convierte números a los caracteres chinos correspondientes, es decir, convierte 345 en tres, cuatro, cinco, solo necesita crear dos matrices
NumArray(0, 1, 2 , 3, 4, 5, 6, 7, 8, 9)
ChsArray('cero','uno','dos','tres','cuatro','cinco','seis ','siete', 'ocho', 'nueve')
Luego escriba el código para determinar el valor de cada dígito, busque el subíndice correspondiente a la matriz de enteros y obtenga el carácter chino correspondiente al subíndice. en la matriz de caracteres chinos.
Si quieres convertir 345 en trescientos cuarenta y cinco.
Luego te da una función, puedes llamarla directamente
función TForm1.FNumToChinese(Const n: Real): String;
Const
ChsNum: WideString = 'Cero, uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve - diez mil, cien, cien, cien, diez, mil y diez mil céntimos';
ChsChar : Matriz[0..1, 0..12 ] de Cadena =
(
('Zeroyuan','Lingshi','Lingbai','Lingqian','Longwan ','Longyi', 'Miles de millones', 'cero cero cero', 'cero cero', 'cero millones', 'cero mil millones', 'cien millones', 'cero yuanes'),
( 'yuan', 'cero', 'cero', 'cero', 'diez mil', 'mil millones', 'mil millones', 'cero', 'cero', 'diez mil', 'mil millones', 'mil millones', 'yuan')
);
var
i: Entero;
StrNum, StrTemp: WideString
begin
Resultado:= '';
StrNum:= Format('15d', [Round(n * 100)]);
para i:= 0 a 14 hacer
comenzar
StrTemp:= Copiar(StrNum, i 1, 1);
si StrTemp = R_SPACE entonces
Continuar
p>else
Resultado:= Resultado ChsNum[StrToInt(StrTemp) 1] R_SPACE ChsNum[i 13] R_SPACE
fin; ;
para i:= 0 a 12 hacer
comenzar
Resultado:= StringReplace(Resultado, ChsChar[0,i], ChsChar[1,i] ], [rfReplaceAll]);
p>si Pos('punto cero', Resultado) = 0 entonces
Resultado:= StringReplace(Resultado, 'ángulo cero', 'cero ', [rfReplaceAll])
else
Resultado:= StringReplace(Resultado, 'ángulo cero', 'entero', [rfReplaceAll]);
Resultado := StringReplace(Resultado, 'punto cero', '', [rfReplaceAll]);
fin
fin;