PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 25 → WX - Função InStr
WX - Função InStr
Iniciado por BOLLER ADRIANO, ago., 02 2016 10:43 PM - 1 resposta
Membro registado
3.659 mensagems
Popularité : +175 (223 votes)
Publicado em agosto, 02 2016 - 10:43 PM
Prezados,

Função para simplificar o seu trabalho de busca da posição de uma ocurrência em um texto:

Procedure InStr(StringOriginal, Busca, NoAccentSN, LowerSN)

nPosicao is int

IF StringOriginal <> "" AND Busca <> "" THEN

IF NoAccentSN = "S" THEN
StringOriginal = NoAccent(StringOriginal)
Busca = NoAccent(Busca)
END

IF LowerSN = "S"
StringOriginal = Lower(StringOriginal)
Busca = Lower(Busca)
END

nPosicao = PositionOccurrence(StringOriginal, Busca, firstRank, FromBeginning)
IF nPosicao = 0 THEN
nPosicao = PositionOccurrence(StringOriginal, Busca, nextRank, FromBeginning)
IF nPosicao = 0 THEN
nPosicao = PositionOccurrence(StringOriginal, Busca, lastRank, FromBeginning)
IF nPosicao = 0 THEN
nPosicao = PositionOccurrence(StringOriginal, Busca, previousRank, FromBeginning)
END
END
END

END
RESULT (nPosicao)


Modo de usar:
Posicao is int = InStr("Adriano José Boller", "jose", "S", "S")
Info(Posicao) //a posição é 9


A stringOriginal pode ser um texto muito mais complexo como uma nota fiscal xml ou um texto de uma página html...

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, agosto, 02 2016 - 10:47 PM
Membro registado
3.659 mensagems
Popularité : +175 (223 votes)
Publicado em agosto, 03 2016 - 1:02 AM
Sobrecarga de método:

Procedure InStr(StringOriginal, Busca)

nPosicao is int

IF StringOriginal <> "" AND Busca <> "" THEN

nPosicao = PositionOccurrence(StringOriginal,Busca,firstRank,FromBeginning)
IF nPosicao = 0 THEN
nPosicao = PositionOccurrence(StringOriginal,Busca,nextRank,FromBeginning)
IF nPosicao = 0 THEN
nPosicao = PositionOccurrence(StringOriginal,Busca,lastRank,FromBeginning)
IF nPosicao = 0 THEN
nPosicao = PositionOccurrence(StringOriginal,Busca,previousRank,FromBeginning)
END
END
END

END

RESULT (nPosicao)



Posicao is int = InStr("Adriano José Boller", "José")
Info(Posicao) //a posição é 9



OBS.:
Gere nova procedure e inverta os parâmetros vai gerar a sobre carga,
em seguida remova e organize os parâmetros para a nova procedure.

Ficando assim a sobrecarga de método com um número entre parênteses, conforme imagem abaixo:





Criem as suas funções, simplifique a ferramenta e reduza o tempo de desenvolvimento, evite retrabalhos e processos complexos, faça grandes problemas virarem pequenas partes e se especialize em cada uma delas, uma hora você conclui e verá que o problema foi resolvido.

Bons estudos,

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, agosto, 03 2016 - 1:07 AM