Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
tenho um formulário aqui para lançamentos que possui dois campos para valor, o segundo serve para "confirmar" o valor digitado no primeiro.
Aqui está funcionando bem, porém numa máquina com windows 98 o valor fica diferente quando digita tres numeros antes da virgula.
23,33 e 23,33(compara e passa)
233,33 e 233,33(compara e não passa, valores diferentes)
Não sei o que está acontecendo.
procedure Tfrm_recibos.msk_valorExit(Sender: TObject);
begin
if not btn_cancela.Focused=true then
begin
if msk_valor.Text <> '' then //se for diferente de vazio coloca formatação
if DBEdit6.Text = '' then
begin
Application.MessageBox('Digite primeiro o valor acima', 'Controle de Recibos', MB_OK+MB_ICONEXCLAMATION);
exit;
end;
if msk_valor.Text = '' then //testa se for vazio
msk_valor.Text := '0';
if floattostr(dmdados.TLancamentosVALOR.Value) <> msk_valor.Text then //compara o valor
//showmessage(floattostr(dmdados.TLancamentosVALOR.value));
//showmessage(msk_valor.Text);
begin
Application.MessageBox('Valor digitado não confere com o valor do item', 'Controle de Recibos', MB_OK+MB_ICONEXCLAMATION);
msk_valor.SetFocus;
end;
if msk_valor.Text <> '' then //se for diferente de vazio coloca formatação
begin
msk_valor.Text := FormatFloat('###,###,##0.00',(StrToFloat(msk_valor.Text)));
msk_valor.Text := 'R$'+ msk_valor.Text;
if DBEdit6.Text = '' then
Application.MessageBox('Digite primeiro o valor acima', 'Controle de Recibos', MB_OK+MB_ICONEXCLAMATION)
end
else
begin
msk_valor.Text := '0';
end;
end;
end;Já debugou para ver que valores estão sendo comparados neste trecho do seu código em runtime?
floattostr(dmdados.TLancamentosVALOR.Value) <> msk_valor.Text
Talvez as configurações regionais na máquina do seu cliente estejam convertendo o valor do seu lançamento num formato diferente do digitado na sua aplicação, pondo um '.' ao invés da vírgula (ou vice-versa) por exemplo... ou pode estar convertendo o valor com mais casas decimais... ou também pode ter algum espaço em branco no seu msk_valor, o que em comparação de strings faz diferença.
Em runtime, como ficam os valores?
[]'s
Veja como esta o separador decimal no sistema, é só uma sugestão. Experimete utilizar "DecimalSeparator := ','" no evento onCreate do seu form
Qual o código no trecho do programa que usa para comparar? Tem certeza que não há nenhum caracter diferente entre os dois edits (por exemplo, espaços em branco) ?
[]'s