crawler 1 Denunciar post Postado Setembro 14, 2009 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
Chrnos 30 Denunciar post Postado Setembro 14, 2009 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
crawler 1 Denunciar post Postado Setembro 15, 2009 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
Chrnos 30 Denunciar post Postado Setembro 15, 2009 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
Raficcha 1 Denunciar post Postado Setembro 15, 2009 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