Red de conocimiento informático - Computadora portátil - Los números de programación de Delphi generan automáticamente números chinos

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;