PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 25 → WX - Função InStr
WX - Função InStr
Débuté par BOLLER ADRIANO, 02 aoû. 2016 22:43 - 1 réponse
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 02 août 2016 - 22:43
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/
Message modifié, 02 août 2016 - 22:47
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 03 août 2016 - 01:02
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/
Message modifié, 03 août 2016 - 01:07