FindString()
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
FindString()
Version 4.51
FindString(Chaine$, ChaineCherchee$, PositionDepart)
Version 4.60
FindString(Chaine$, ChaineCherchee$, [PositionDepart])
la position de départ n'est plus obligatoire en version 4.60.
FindString(Chaine$, ChaineCherchee$, PositionDepart)
Version 4.60
FindString(Chaine$, ChaineCherchee$, [PositionDepart])
la position de départ n'est plus obligatoire en version 4.60.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: FindString()
Et ben ça c'est pas dommage 
La plupart du temps on cherche du début, et a chaque fois j'l'oublie ce satané 1
J'v'ais encore faire mon monsieur + , mais c'est dommage qu'il y ai pas, un FindString(Chaine$, ChaineCherchee$, - 10) par exemple ou bien un FindStringRev(Chaine$, ChaineCherchee$, [PositionDepart]) car souvent j'ai besoin de recherches en partant de la fin jusqu'au début.
Pour une fois VB6 marque un point : InStrRev, fonction
Description
Renvoie la position d'une occurrence d'une chaîne dans une autre, à partir de la fin de la chaîne.

La plupart du temps on cherche du début, et a chaque fois j'l'oublie ce satané 1

J'v'ais encore faire mon monsieur + , mais c'est dommage qu'il y ai pas, un FindString(Chaine$, ChaineCherchee$, - 10) par exemple ou bien un FindStringRev(Chaine$, ChaineCherchee$, [PositionDepart]) car souvent j'ai besoin de recherches en partant de la fin jusqu'au début.
Pour une fois VB6 marque un point : InStrRev, fonction
Description
Renvoie la position d'une occurrence d'une chaîne dans une autre, à partir de la fin de la chaîne.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: FindString()
Rhoooo tu es énervantKwai chang caine a écrit :c'est dommage qu'il y ai pas, un FindString(Chaine$, ChaineCherchee$, - 10) par exemple ou bien un FindStringRev(Chaine$, ChaineCherchee$, [PositionDepart]) car souvent j'ai besoin de recherches en partant de la fin jusqu'au début.
Pour une fois VB6 marque un point : InStrRev, fonction
Description
Renvoie la position d'une occurrence d'une chaîne dans une autre, à partir de la fin de la chaîne.

Rien que pour toi :
InStrRev : Retourne la position de la première occurrence d'une chaîne dans une autre, à partir du côté droit de la chaîne. En option tu peux préciser la position de départ à partir de la fin de cette chaine à parcourir.
Code : Tout sélectionner
InStrRev V 1.00
;Retourne la position de la première occurrence d'une chaîne
;dans une autre, à partir du côté droit de la chaîne.
Procedure InStrRev(String.s, StringToFind.s, StartPosition.i=1)
Protected Buffer.s ;Chaine à parcourir
Protected FindPosition.i;Position ou se trouve la chaine recherché
Protected x.i ;Indice de parcours de la chaine à inspecter
;Formatage de la chaine à parcourir
Buffer=Mid(String, 1, Len(String)-(StartPosition-1))
;Et c'est parti .......
x=-1
While x<>0
x=FindString(Buffer, StringToFind, x+Len(StringToFind))
If x<>0
Findposition=x
EndIf
Wend
ProcedureReturn FindPosition
EndProcedure
Code : Tout sélectionner
Buffer$="Combien de 'ien' contient le mot chien ?"
Debug InStrRev(Buffer$, "ien")
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: FindString()
Merci beaucoup mon bon FALSAM 
C'est ce que j'ai fait évidemment....
Mais pourquoi a ce moment la ne pas coder la fonction FindString, c'est facile, une énumération de chaque caractère et si on trouve celui qu'on cherche "ProceMolleReviens" de la position
Et puis tiens facile le StringField, on recherche en énumérant toujours le séparateur, et on découpe la phrase par chaque morceau entre chaque, et en plus on ferait encore mieux que FRED, car on faisant mon monsieur +, je ne vois pas pourquoi il a limité le séparateur a un seul caractère, ma fonction pourrait en avoir 2,4,6,100
A ce moment la, on en viens a ce que disait GRom, des fonctions vraiment de bases, et le reste faut faire chacun les nôtres
Une partie des fonctions peuvent être réécrites, ce n'est pas le problème.
Mais ce que je dis, c'est que tant qu'a faire un langage, il serait cool de jeter un œil sur les voisins
Et si y'a une chose que j’apprécie pas du tout c'est que VB6 sache faire NATIVEMENT quelque chose de simple que PB ne sait pas.
Et quand on fait une fonction, faut essayer de la compléter au maximum, afin qu'elle gère presque tous les cas.
De plus, je pense que coder directement en C, doit quand même être plus rapide que de réutiliser des fonctions pour en faire d'autres
C'est plus facile à dire qu'a faire, le problème n'est pas de ne pas y avoir pensé, c'est de ne pas l'avoir rajouté, car ça m’étonnerais que quelqu'un n'ai pas demandé ça un jour.
Je trouve dommage que FRED ne prenne pas plus en considération ce genre de petites demandes, qui a mon avis ne doivent pas modifier le noyau de PB
J'y connais rien en C, mais recréer une fonction partant de l'inverse, ne doit pas mettre en péril la stabilité de la V4.61
Je reste à dire que les grosses modifs sont super, évidemment, bien que la plupart du temps elles ne me servent presque pas.
Je me dis KCC faut pas penser qu'a ta gueule...mais quand même si une fois FRED se disait, tiens sur cette version on va pas inventer un moteur 5D, avec intégration de la LIB TrucMuche, qui permettra de gérer un truc de ouf, etc...
Cette fois, je vais penser à tous les petits qui eux demandent des petites fonctions bien pratiques, quand ils codent tous les jours
Cette fois au lieu de faire une mega évolution, je vais incorporer 200 petites modifs, que tous le monde réclame depuis le début.
Ca fera autant de boulot, surement moins de risque de plantage qu'un canvasgadget, et chacun aura l'impression, d'avoir eu son petit cadeau
De plus toutes ces fonctions mises bout à bout pourrait rendre encore plus attractif ce langage
C'est comme tout, les petits ruisseaux font les grandes rivières...y'a pas que ce qui est gros, puissant, cher qui est important.
Les petites choses, les plus simples peuvent parfois être indispensables pour terminer un gros œuvre
Regarde un constructeur, il a beau avoir 22 pelleteuses, des grues, et tout le toutim
Si il lui manque une petite clef de 13, et ben toute la construction de ground zero peut être arrêté
Ca m'a déjà assez gonflé qu'on puisse pas gérer l'OLE, mais ça, je l'ai compris, c'est peut être copyright BILOU, en plus c'est super dur a faire, etc...
Heureusement que SROD et TsSoft sont passé par la pour rajouter une fonction importante a PB, qui existait pour le C, et lui permettre de jouer dans la cour des grands.
Les LIB perso, je suis contre, car quand on change de machine, ou qu'on se file les codes, etc....a chaque fois, je lis :"Excusez moi, ça c'est une lib perso, et j'ai oublié que vous l'aviez pas"
En fin de compte, je me dis parfois que pour PB, c'est comme dans la vie....y'en a que pour les puissants

C'est ce que j'ai fait évidemment....
Mais pourquoi a ce moment la ne pas coder la fonction FindString, c'est facile, une énumération de chaque caractère et si on trouve celui qu'on cherche "ProceMolleReviens" de la position

Et puis tiens facile le StringField, on recherche en énumérant toujours le séparateur, et on découpe la phrase par chaque morceau entre chaque, et en plus on ferait encore mieux que FRED, car on faisant mon monsieur +, je ne vois pas pourquoi il a limité le séparateur a un seul caractère, ma fonction pourrait en avoir 2,4,6,100

A ce moment la, on en viens a ce que disait GRom, des fonctions vraiment de bases, et le reste faut faire chacun les nôtres

Une partie des fonctions peuvent être réécrites, ce n'est pas le problème.
Mais ce que je dis, c'est que tant qu'a faire un langage, il serait cool de jeter un œil sur les voisins
Et si y'a une chose que j’apprécie pas du tout c'est que VB6 sache faire NATIVEMENT quelque chose de simple que PB ne sait pas.

Et quand on fait une fonction, faut essayer de la compléter au maximum, afin qu'elle gère presque tous les cas.
De plus, je pense que coder directement en C, doit quand même être plus rapide que de réutiliser des fonctions pour en faire d'autres

C'est plus facile à dire qu'a faire, le problème n'est pas de ne pas y avoir pensé, c'est de ne pas l'avoir rajouté, car ça m’étonnerais que quelqu'un n'ai pas demandé ça un jour.
Je trouve dommage que FRED ne prenne pas plus en considération ce genre de petites demandes, qui a mon avis ne doivent pas modifier le noyau de PB

J'y connais rien en C, mais recréer une fonction partant de l'inverse, ne doit pas mettre en péril la stabilité de la V4.61

Je reste à dire que les grosses modifs sont super, évidemment, bien que la plupart du temps elles ne me servent presque pas.
Je me dis KCC faut pas penser qu'a ta gueule...mais quand même si une fois FRED se disait, tiens sur cette version on va pas inventer un moteur 5D, avec intégration de la LIB TrucMuche, qui permettra de gérer un truc de ouf, etc...
Cette fois, je vais penser à tous les petits qui eux demandent des petites fonctions bien pratiques, quand ils codent tous les jours
Cette fois au lieu de faire une mega évolution, je vais incorporer 200 petites modifs, que tous le monde réclame depuis le début.
Ca fera autant de boulot, surement moins de risque de plantage qu'un canvasgadget, et chacun aura l'impression, d'avoir eu son petit cadeau

De plus toutes ces fonctions mises bout à bout pourrait rendre encore plus attractif ce langage
C'est comme tout, les petits ruisseaux font les grandes rivières...y'a pas que ce qui est gros, puissant, cher qui est important.
Les petites choses, les plus simples peuvent parfois être indispensables pour terminer un gros œuvre
Regarde un constructeur, il a beau avoir 22 pelleteuses, des grues, et tout le toutim
Si il lui manque une petite clef de 13, et ben toute la construction de ground zero peut être arrêté

Ca m'a déjà assez gonflé qu'on puisse pas gérer l'OLE, mais ça, je l'ai compris, c'est peut être copyright BILOU, en plus c'est super dur a faire, etc...
Heureusement que SROD et TsSoft sont passé par la pour rajouter une fonction importante a PB, qui existait pour le C, et lui permettre de jouer dans la cour des grands.
Les LIB perso, je suis contre, car quand on change de machine, ou qu'on se file les codes, etc....a chaque fois, je lis :"Excusez moi, ça c'est une lib perso, et j'ai oublié que vous l'aviez pas"

En fin de compte, je me dis parfois que pour PB, c'est comme dans la vie....y'en a que pour les puissants

Dernière modification par Kwai chang caine le mer. 07/sept./2011 16:37, modifié 1 fois.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: FindString()
je vois que ce n'est pas forme hein ? alors une tisane et au lit 

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: FindString()
@Falsam
Bonjour,
Pour chercher a l'envers utiliser :
Resultat$ = FindString(ReverseString(Chaine$),Machaine$)
ça marche
Bonjour,
Pour chercher a l'envers utiliser :
Resultat$ = FindString(ReverseString(Chaine$),Machaine$)
ça marche

Windows 7 et Windows 8.1 Pb 5.0 jusque 5.24 Lts 64 et 5.3 (64)/b]
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: FindString()
Tu as tord de le prendre comme ça...je vois que ce n'est pas forme hein ? alors une tisane et au lit
C'est par ce genre de réflexion que l'on avance jamais

C'est pas parce que on pousse un coup de gueule qu'on a tord et qu'on est un emmerdeur

Beaucoup de choses ne se seraient jamais passées si y'avait pas eu des gens qui disent ce qu'il faut dire au bon moment.
Meme si ça fait pas plaisir a tout le monde

Salut mon bon GEBONETGeBonet a écrit :@Falsam
Bonjour,
Pour chercher a l'envers utiliser :
Resultat$ = FindString(ReverseString(Chaine$),Machaine$)
ça marche

Cool ...ça c'est une idée que j'aurais pas pensé

C'est vrai que c'est plus court que de recoder la fonction

Merci, je la garde dans ma besace, il n'en reste pas moins que ce doit être moins rapide que codée direct en C

- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: FindString()
Hein ? Quoi ? je dois être bradycéphale (J'adore)GeBonet a écrit :@Falsam
Resultat$ = FindString(ReverseString(Chaine$),Machaine$) ça marche
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: FindString()
En fait il faut pas oublier que l'on recherche à partir de la fin quelque chose qui est à l'endroit...
Bref, c'est sur le fait que "ReverseString(Chaine$)" inverse la chaine qu'il faut jouer...
Si on cherche le dernier "o" ou "on" de "il ont contribuer à la constitution" alors c'est intéressant...
Mais pour "on", il faut pas oublier alors que le mot que l'on cherche, ce n'est plus "on" mais "no"
@Kcc,
Ben oui, probablement que ça va plus vite en "c", mais tu vois tout est relatif... ReverseString(Chaine$) est plus certainement plus rapide que la "Procedure InStrRev(String.s, StringToFind.s, StartPosition.i=1)" cité plus haut... Mais en fait a un certain moment ou est la différence entre vite et très vite... 1 mnisec et 5 minisec.. si on ne le fait qu'un fois de temps en temps ?
En plus la machine suivante, elle va 5 ou 10 fois plus vite, alors dans l'absolu, ou est la différence ?
On se chatouille souvent pour se faire rire non ?
La dessus, bises à tous,
Gerhard

Bref, c'est sur le fait que "ReverseString(Chaine$)" inverse la chaine qu'il faut jouer...
Si on cherche le dernier "o" ou "on" de "il ont contribuer à la constitution" alors c'est intéressant...
Mais pour "on", il faut pas oublier alors que le mot que l'on cherche, ce n'est plus "on" mais "no"

@Kcc,
Ben oui, probablement que ça va plus vite en "c", mais tu vois tout est relatif... ReverseString(Chaine$) est plus certainement plus rapide que la "Procedure InStrRev(String.s, StringToFind.s, StartPosition.i=1)" cité plus haut... Mais en fait a un certain moment ou est la différence entre vite et très vite... 1 mnisec et 5 minisec.. si on ne le fait qu'un fois de temps en temps ?
En plus la machine suivante, elle va 5 ou 10 fois plus vite, alors dans l'absolu, ou est la différence ?
On se chatouille souvent pour se faire rire non ?

La dessus, bises à tous,
Gerhard
Windows 7 et Windows 8.1 Pb 5.0 jusque 5.24 Lts 64 et 5.3 (64)/b]
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: FindString()
C'est pas faux, pour la rapidité 
Ca reste juste plus long a écrire, et moins facile à lire....
En tout cas bien vu, l'aveugle

Ca reste juste plus long a écrire, et moins facile à lire....
En tout cas bien vu, l'aveugle
