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
Carlos Susviela
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 Carlos Susviela »

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: 20416
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 3109
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