Função e/ou nome pra BetweenValue()

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

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Função e/ou nome pra BetweenValue()

Mensagem por JoséQuintas »

Criei esta função inicialmente pra checagem de intervalo.
Era IsBetween().
Agora estou fazendo maior uso, pra ajustar valores, então renomeei.
Tem alguma função pronta pra isso?
Ou... teria um nome mais adequado pra isso?

Código: Selecionar todos

FUNCTION BetweenValue( xValue, xMin, xMax )

   LOCAL lIsBetween

   lIsBetween := ( xValue < xMin .OR. xValue > xMax )
   xValue     := Max( Min( xMax, xValue ), xMin )

   RETURN lIsBetween
Exemplos de uso:

relatório do financeiro com intervalo de datas
Ao invés de Vencto >= datainicial .and. vencto <= datafinal
BetweenValue( Vencto, datainicial, datafinal )

numa escolha de 1 a 6, onde o default poderia ser 9
betweenValue( @nOpc, 1, 6 )
assim, o valor fica ajustado pra não ultrapassar os limites

É só pra ter um nome mais comum, talvez igual a outra linguagem de programação, caso não exista no Harbour.

Na GETSYS tem até o RangeCheck() que não é STATIC, mas só funciona pra GETSYS.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Função e/ou nome pra BetweenValue()

Mensagem por JoséQuintas »

Na verdade não serve uma única função.
É que tem horas que o resultado vém de outra origem, e juntar as funções não adianta pra isso.
nOpc := FixInRange( LeCnf( "ALGO" ), 1, 5 )

Já tinha feito isso antes: FixInRange() e IsBetween(), acabei deixando as duas.
Talvez altere pra IsRange(), mais fácil de digitar, se não tiver incompatibilidade com alguma outra.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Função e/ou nome pra BetweenValue()

Mensagem por Fernando queiroz »

JoséQuintas escreveu:Na verdade não serve uma única função.
É que tem horas que o resultado vém de outra origem, e juntar as funções não adianta pra isso.
nOpc := FixInRange( LeCnf( "ALGO" ), 1, 5 )

Já tinha feito isso antes: FixInRange() e IsBetween(), acabei deixando as duas.
Talvez altere pra IsRange(), mais fácil de digitar, se não tiver incompatibilidade com alguma outra.

Quintas você usa essa função no SQL???

Não sei se estamos falando das mesmas coisas, mas estou usando assim:

cQuery := "SELECT ENTRADA_UFORNEC, ENTRADA_C_UF, ENTRADA_C_XNOME, SUM(ENTRADA_w_vNF) AS TOTALCALC FROM entrada "
cQuery += "WHERE ENTRADA_UFORNEC = '" + strzero(UFORNEC,4,0) + "' AND "
cQuery += "ENTRADA_DATMOV BETWEEN "
cQuery += "'" + Transform(Dtos(PERINI),"@R 9999-99-99" ) + "' "
cQuery += "AND "
cQuery += "'" + Transform(Dtos(PERFIN),"@R 9999-99-99" ) + "'"
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Função e/ou nome pra BetweenValue()

Mensagem por JoséQuintas »

Sim, mas digo outra, pra usar no Harbour.

Por exemplo:
Eu permito salvar as configurações do relatório pra uso futuro.
Mas posso adicionar/remover opções.
Uma limitação acaba sendo útil.
Digamos até array, ou dbedit, ou outro.

A análise se torna mais interessante à medida que os nomes de variáveis envolvem fórmulas e outras coisas mais.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder