Código Delphi
[-]
function extractSimbolFromMultiByteChar(Text: PAnsiChar): Char;
var
Buffer: Char;
Size: Integer;
begin
Size := MultiByteToWideChar(0,0,Text,-1,nil,0);
if (Size > 0) then
begin
MultiByteToWideChar(0 ,MB_COMPOSITE , Text,-1, @Buffer, Size);
result:=Buffer;
end;
end;
Código Delphi
[-]
function clearMultiByteChar(Text: String): String;
var
i: Integer;
begin
result:='';
for I := 1 to Length(Text) do
Result:=Result+extractSimbolFromMultiByteChar(PAnsiChar(AnsiString(text[i])));
end;
Modo de uso:
clearMultiByteChar('Este es el mejor día del año');
Retorno:
Este es el mejor dia del ano
Nótese que la "ñ" por ser un caracter compuesto tambien es descompuesto y separado en "n" + "´", por lo tanto el retorno es solo "n".
El objetivo principal de esta funcion no es el de representar texto en pantalla, si no ser una herramienta para comparaciones y otros tratamientos de texto.
De todos modos, si alguien la quisiera usar para procesar texto para ser mostrado en pantalla, no seria dificil modificar la funcion para que deje las "ñ" intactas.