Se você tiver uma string assim: “R$ 1.234,56″ e precisar converter para currency ou float, você precisa antes remover o símbolo da moeda “R$” e o separador de milhar.

Tenho utilizado essa função para isso:

<code>function StrCurrToCurrDef(AString: string; Default: Currency): Currency;
begin
  AString := StringReplace(AString, ThousandSeparator, '', [rfReplaceAll]);
  AString := StringReplace(AString, CurrencyString, '', [rfReplaceAll]);
  Result := StrToCurrDef(AString, Default);
end;
</code>

Não lembro mais se foi eu quem a escrevi ou se peguei na web, então os créditos vão ficar pendentes.

O primeiro parâmetro que você passa é a string a ser convertida e o segundo é um valor default, caso a conversão não seja bem sucedida.