Busca palavra em Vetor em qualquer posição

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

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Busca palavra em Vetor em qualquer posição

Mensagem por asimoes »

Pessoal,

Existe alguma função do harbour que possa localizar uma palavra no vetor em qualquer posição

Por exemplo

Código: Selecionar todos

aVetor := {}

aAdd( aVetor, {"ALEXANDRE SIMOES"} )
aAdd( aVetor, {"MARIA DA SILVA"} )
Quero achar nesse vetor a palavra DA SILVA ou SILVA como se fosse um LIKE de um SQL
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
susviela@bol.com.br
Usuário Nível 3
Usuário Nível 3
Mensagens: 236
Registrado em: 30 Jun 2017 11:17
Localização: São José / SC
Contato:

Busca palavra em Vetor em qualquer posição

Mensagem por susviela@bol.com.br »

Que eu lembre não, vais ter que fazer a tua função:

Código: Selecionar todos

cBusca := "SILVA"
for i = 1 len(aVetor) 
	if  cBusca $ aVector[i] 
	   ? aVector[i]
	Endif
Next   
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

Busca palavra em Vetor em qualquer posição

Mensagem por marcosgambeta »

aEval não serviria ?

Código: Selecionar todos

aResultado := {}
cBusca := " DA SILVA"

aEval( aVetor, { | xValue, nIndex | IIf( cBusca $ xValue, aadd( aResultado, xValue ), NIL ) } )

FOR n := 1 TO Len( aResultado )
   ? aResultado[ n ]
NEXT n
https://www.itlnet.net/programming/prog ... g9170.html
Atenciosamente,
Marcos Antonio Gambeta
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

Busca palavra em Vetor em qualquer posição

Mensagem por marcosgambeta »

Um detalhe: o segundo parâmetro do codeblock pode ser omitido.

Código: Selecionar todos

aEval( aVetor, { | xValue | IIf( cBusca $ xValue, aadd( aResultado, xValue ), NIL ) } )
Atenciosamente,
Marcos Antonio Gambeta
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Busca palavra em Vetor em qualquer posição

Mensagem por asimoes »

Valeu gente,

Vou testar
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Busca palavra em Vetor em qualquer posição

Mensagem por asimoes »

Funcionou!

Fiz um filtro para usar no objeto BROWSE da hwgui, primeiro faço um filtro no SQL usando LIKE e depois faço outro filtro em cima do vetor no BROWSE, porque o usuário sabe que o nome que el quer pesquisar é ALEXANDRE, a consulta do banco vai trazer todos os nomes que contém o nome ALEXANDRE mais ele pode digitar por exemplo SILVA que vai fazer outra filtro no vetor,

Já funcionou
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Busca palavra em Vetor em qualquer posição

Mensagem por JoséQuintas »

Não tem como... lembrei do ADO.

Código: Selecionar todos

Temp := cnSQL:Execute( "SELECT * FROM CADASTRO WHERE NOME LIKE '%ALEXANDRE%'" )
Temp:Filter = "NOME LIKE '%SILVA%'"
E HWGUi aceita ADO no browse.
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/
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Busca palavra em Vetor em qualquer posição

Mensagem por alxsts »

Olá!

Em lugar do $, pode também usar as funções At() ou RAt(), conforme a necessidade.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Busca palavra em Vetor em qualquer posição

Mensagem por asimoes »

A ideia era pra fazer um sub-filtro, ficou assim
2021-01-22 05_29_31-Greenshot.png
Na barra de status o usuário digita o nome ou parte do nome que quer localizar, depois da consulta ao banco que já populou a grid
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder