RE:Paso de cifras a letras
Es muy sencillo...
usando length para contar el tamaño de la cadena y asi ir desglosando y ver si el numero pertence a la unidad, decena, centena, etc. y asi escribir su valor correspondiente.
por ejemplo s = '256'
case length(s) of {unidades}
'1':salida:='Uno';
'2':Salida :='Dos';
... ... ...
'9':salida:='Nueve';
end {case unidades}
case length(s)-1of {decenas}
'1'case length(s) of
'1':Salida:='Once';
'2':Salida:='Doce'
......
end;
'2':case length(s) of
'1':salida:='Veintiuno';
'2':salida:='Veintidos';
....
end;
'3':if length(s) = 0 then
salida:='Treinta'
else begin
aux:='Treinta y ';
insert(aux,salida,1);
......
end; {case decenas}
para millares seria length(s)-2, para unidad de millar length(s)-3, etc, etc.
length(s:string) Funcion que devuelve el numero de caracteres que tiene una cadena, si s ='256' - length(s) devuelve 3.
insert(fuente,destino,indice) procedimiento que inserta la cadena fuente en la destino, empezado en la posicion indicada por indice.
Espero te ayude.
Roberto