Fórum Dúvida com Currency #297422
28/09/2005
0
Se eu utilizar StrToCurr(´(5.850,55)´) vai dar erro de converção devido aos parenteses e ao ponto.
Mkoch
Curtir tópico
+ 0Posts
28/09/2005
Mkoch
Gostei + 0
28/09/2005
Steve_narancic
var x: Currency; begin if Pos(´(´,edt1.Text) > 0 then begin edt1.Text := StringReplace(edt1.Text,´(´,´´,[rfReplaceAll]); edt1.Text:= StringReplace(edt1.Text,´)´,´´,[rfReplaceAll]); edt1.Text:= ´-´+edt1.Text; end; x:= strtocurr(edt1.text); end;
Gostei + 0
28/09/2005
Rjun
function TForm1.StrToCurr(Valor: string): Double; begin Valor := StringReplace(Valor, ´(´, ´-´, [rfReplaceAll]); Valor := StringReplace(Valor, ´)´, ´´, [rfReplaceAll]); Valor := StringReplace(Valor, ´.´, ´´, [rfReplaceAll]); result := StrToFloat(Valor); end;
Gostei + 0
28/09/2005
Steve_narancic
function TForm1.StrToCurr(Valor: string): Double; begin Valor := StringReplace(Valor, ´(´, ´-´, [rfReplaceAll]); Valor := StringReplace(Valor, ´)´, ´´, [rfReplaceAll]); Valor := StringReplace(Valor, ´.´, ´´, [rfReplaceAll]); result := StrToFloat(Valor); end;
[b:63c71e2eb9]
Realmente seu código ficou bem melhor, que o meu[/b:63c71e2eb9]
Gostei + 0
28/09/2005
Mkoch
function StrToMoney(const Valor: ShortString): Currency; var S: ShortString; Negativo: Boolean; begin Result := 0; if Vazio(Valor) then Exit; Negativo := False; try //Valor = 51.368,00 | R$ 51.368,00 | (R$ 51.368,00) | -R$ 51.368,00 e outros //Remove os Possíveis espaços em Branco S := StringReplace(Valor, ´ ´, ´´, [rfIgnoreCase]); //Remove o Símbolo de Dinheiro ´R$´ S := StringReplace(S, CurrencyString, ´´, [rfIgnoreCase]); //Remove o separador de milhar ´.´ S := StringReplace(S, ThousandSeparator, ´´, [rfIgnoreCase]); //Verifica se o número é negativo tem ´-´ ou ´(´ e ´)´ if (Pos(´-´, S) > 0) or (Pos(´(´, S) > 0) or (Pos(´)´, S) > 0) then begin Negativo := True; S := StringReplace(S, ´-´, ´´, [rfIgnoreCase]); S := StringReplace(S, ´(´, ´´, [rfIgnoreCase]); S := StringReplace(S, ´)´, ´´, [rfIgnoreCase]); end; Result := StrToCurr(S); if Negativo then//Inverte para Negativo se necessário Result := Result * -1; except on EConvertError do MsgErro(´Não foi possível converter ´ + QuotedStr(Valor) + ´ para um valor monetário ´ + QuotedStr(S) + ´.´); end; end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)