Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

crawler

Compara dois edits

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja como esta o separador decimal no sistema, é só uma sugestão. Experimete utilizar "DecimalSeparator := ','" no evento onCreate do seu form

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.