Não adianta querer me crucificar por ficar reclamando de bugs no Delphi. Infelizmente achei mais um.

Hoje apanhei por cerca de três horas até identificar o larápio. Acontece o seguinte, quando eu faço uma chamada a um webservice no meu aplicativo, uma das classes da VCL (TTypeTranslator da unit TypeTrans) envolvidas na chamada do WS simplesmente altera (no método CastSoapToNative) o separador decimal padrão da aplicação para o formato americano (com ponto no lugar de vírgula), detonando todas as operações numéricas do aplicativo.

Fiz uma pesquisa no QualityCentral da Borland e não encontrei este bug reportado, então fiz minha parte e reportei: http://qc.borland.com/wc/qcmain.aspx?d=16184

Como alterar o código da VCL é uma péssima idéia em qualquer circunstância, para resolver, eu salvo o DecimalSeparator atual antes de chamar o WebService e depois o restauro:

<code>var
  CorrectDecimalSeparator: char;
begin
  CorrectDecimalSeparator := DecimalSeparator;
  try
      // Chamada aos métodos do WS
  finally
    DecimalSeparator := CorrectDecimalSeparator;
  end;
end;</code>

Esse problema está presente no Delphi 7 e 2005. Espero que consigar ser corrigido já no Dexter, mas não sei não…

Update: O Rodolfo apontou que o bug já foi reportado sim para a Borland, há mais de um ano atrás: http://qc.borland.com/qc/wc/qcmain.aspx?d=8928.