Clipper On Line • Ver Tópico - Dica do dia: AScan() pra verificar valores

Dica do dia: AScan() pra verificar valores

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Dica do dia: AScan() pra verificar valores

Mensagempor JoséQuintas » 14 Jan 2019 10:33

Vi isso uma vez nos fontes do Harbour, achei interessante, e tenho usado.
Num uso recente, usei pra testar teclas.
Compare:

nKey := 0
DO WHILE ! Str( nKey, 3 ) $ " 27,  5, 24, 19,  4"
   nKey := Inkey()
ENDDO


nKey := 0
DO WHILE nKey != K_ESC .AND. nKey != K_UP .AND. nKey == K_DOWN .AND. nKey == K_LEFT .AND. nKey == K_RIGHT
   nKey := Inkey(0)
ENDDO


nKey := 0
DO WHILE ASCan( { K_ESC, K_UP, K_DOWN, K_LEFT, K_RIGHT }, nKey ) == 0
   nKey := Inkey(0)
ENDDO


No primeiro modo, toda vez que olhar o fonte precisa raciocionar qual tecla equivale a cada código.
No segundo modo, o fonte parece ficar embaralhado.
No terceiro modo fica mais instantâneo "enxergar" as teclas.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Dica do dia: AScan() pra verificar valores

Mensagempor lugab » 14 Jan 2019 14:17

Bacana, mestre..

Vislumbro múltiplos usos pra essa dica
lugab
lugab
Colaborador

Colaborador
 
Mensagens: 843
Data de registro: 19 Mai 2009 15:58
Curtiu: 126 vezes
Mens.Curtidas: 38 vezes

Dica do dia: AScan() pra verificar valores

Mensagempor JoséQuintas » 06 Mai 2020 10:21

O cuidado com isso é sobre o SET EXACT ON/OFF.
Na dúvida, uso a opção de codeblock.

      IF ASCan( { "102", "103", "300", "400" }, { | e | e == Substr( :String( "IPICMCST" ), 2, 3 ) } ) == 0


Aliás...
Será que precisamos mesmo de SET EXACT OFF ?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Dica do dia: AScan() pra verificar valores

Mensagempor JoséQuintas » 06 Mai 2020 10:23

Nesse último que postei, talvez alterar pra numérico:

      IF ASCan( { 102, 103, 300, 400 }, Val( Substr( :String( "IPICMCST" ), 2, 3 ) ) ) == 0
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Dica do dia: AScan() pra verificar valores

Mensagempor JoséQuintas » 06 Mai 2020 10:36

Um exemplo prático, alterando agora:

   CASE ASCan( { "04", "06", "07", "08", "09" }, { | e | e == :String( "IPCOFCST" ) } ) != 0


   CASE ASCan( { 4, 6, 7, 8, 9 }, :Number( "IPCOFCST" ) ) != 0


Nota:
Tive um problema num cliente, por isso alterando a forma de análise.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 18 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro