Es muy probable que la funcion ShowMessage tambien este filtral los caracteres que no corresponden... Creo que deberias filtrar algo como asi:
Código Delphi
[-]
procedure Filtrar(var Cadena: String);
var i: integer;
begin
i:= 1;
while i < Length(Cadena) do
begin
if (Cadena[i]<#32)and(Cadena[i]<>#9)and(Cadena[i]<>#13) then
Delete(Cadena, i, 1)
else i:= i+1;
end;
end;