Comparar string

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Comparar string

Mensagem por marcos.gurupi »

Caros colegas, estou usando uma comparacao de string para separar um determinado produto e calcular a venda. Segue a explicação abaixo do que estah ocorrendo:

Tenho um combobox que o conteudo escolhido pelo usuario eh: DIESEL

Tenho um dbf dos caixas onde tem todas as vendas dos produtos do dia, entaum lah eu tenho:

Produto:
GASOLINA COMUN
GASOLINA ADITIVADA
DIESEL
DIESEL S-10
ETHANOOL

Ocorre que o codigo abaixo traz alem dos produtos DIESEL, traz tb DIESEL S-10, onde deveria soh vim DIESEL

Código: Selecionar todos

If SubStr(Produto,1,Len(Produto)) = SubStr(oProduto:GetText(),1,Len(oProduto:GetText()))
Tentei usar o alltrim() mas nao tive sucesso. Em q estou comendo bola ?

:%
Marcos Roberto
NetService Software
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1299
Registrado em: 06 Jul 2004 00:44
Contato:

Comparar string

Mensagem por ANDRIL »

Tenta assim:

Código: Selecionar todos

If SubStr(Produto,1,Len(oProduto:GetText())) = SubStr(oProduto:GetText(),1,Len(oProduto:GetText())) 


Caso não funcione acima:

Código: Selecionar todos

If SubStr(Produto,1,Len(oProduto:GetText())) == SubStr(oProduto:GetText(),1,Len(oProduto:GetText())) 


Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Comparar string

Mensagem por Toledo »

Marcos, tente usar o SET EXACT ON ou utilize o operador == (igual duplo).

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Comparar string

Mensagem por marcos.gurupi »

Obrigado por responder toledo. Eu jah havia tentando o operador == mas sem o set extract on. O problema foi solucionado usando o codigo abaixo, graças ao colega Toya:

Código: Selecionar todos

cAux := alltrim( oProduto:GetText() )

...
...

If alltrim( Produto ) == cAux // Ai deu certo assim.

Obrigado mais uma vez ao colega Toya.
Marcos Roberto
NetService Software
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Comparar string

Mensagem por Toledo »

marcos.gurupi escreveu:Eu jah havia tentando o operador == mas sem o set extract on.
Atenção, não é set extract on, o correto é SET EXACT ON.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
marcos.gurupi
Usuário Nível 4
Usuário Nível 4
Mensagens: 939
Registrado em: 06 Jul 2004 11:53
Localização: Gurupi-TO

Comparar string

Mensagem por marcos.gurupi »

:D
Obr pela correção
Marcos Roberto
NetService Software
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Comparar string

Mensagem por alxsts »

Olá!

Não entendi como você havia tentado == e não deu certo. Depois o Toya colocou == como solução e deu certo...

Segundo o Manual do Clipper, SET EXACT não tem nenhuma influência sobre o operador ==
marcos.gurupi escreveu:deveria soh vim DIESEL
Este ator trabalha muito bem! :))
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Comparar string

Mensagem por Toledo »

alxsts escreveu:SET EXACT não tem nenhuma influência sobre o operador ==
Mas tem influência sobre o operador =, veja o que diz o manual do Clipper:
When EXACT is OFF two character strings are compared according to the
following rules; assume two character strings, cLeft and cRight,
where the expression to test is (cLeft = cRight):

- If cRight is null, return true (.T.).

- If LEN(cRight) is greater than LEN(cLeft), return false (.F.).

- Compare all characters in cRight with cLeft. If all
characters in cRight equal cLeft, return true (.T.); otherwise
return false (.F.).

With EXACT ON, two strings must match exactly, except for trailing
blanks.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
sambomb
Usuário Nível 3
Usuário Nível 3
Mensagens: 250
Registrado em: 24 Out 2008 17:02
Localização: Itaocara - RJ - Brasil

Comparar string

Mensagem por sambomb »

alxsts escreveu:Olá!

Não entendi como você havia tentado == e não deu certo. Depois o Toya colocou == como solução e deu certo...

Segundo o Manual do Clipper, SET EXACT não tem nenhuma influência sobre o operador ==
marcos.gurupi escreveu:deveria soh vim DIESEL
Este ator trabalha muito bem! :))
Repare que tem o AllTrim no código do Toya, ele estava comparando sem verificar os espaços

Exemplo:

Var1 := PadR("Teste",10)
Var2 := "Teste"


? Var1 == Var2 //-- Retorna falso por causa dos espaços a direita do Var1

? AllTrim(Var1) == AllTrim(Var2) //-- Retorna verdadeiro
Imagem

Rca Sistemas - Itaocara - RJ
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Comparar string

Mensagem por alxsts »

Olá!

Valeu amigos. Acho que a questão ficou bem esclarecida.
[]´s
Alexandre Santos (AlxSts)
Responder