| Problème avec la fonction 'instr'. | |
|
+4Jean Claude Yannick ambroise pan59 8 participants |
|
Auteur | Message |
---|
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Problème avec la fonction 'instr'. Lun 16 Juil 2012 - 17:39 | |
| Bonjour.
Comment faire pour simuler la fonction instr (chaine1, chaine2, P) afin de rechercher la position de la chaine2 dans chaine1, à partir de la position P ?
Cette fonction m'est d'une grande utilité.
Merci de votre aide. | |
|
| |
ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: Problème avec la fonction 'instr'. Lun 16 Juil 2012 - 20:07 | |
| Ce script donnera la position du dernier "amis" à partir de "sont" : - Code:
-
dim a$, b$, position% a$ = "Les amis de mes amis sont mes amis" b$ = "amis"
position% = 22
print instr(right$(a$,(len(a$)+1) - position%),b$)
Dernière édition par ambroise le Lun 16 Juil 2012 - 20:18, édité 2 fois | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 16 Juil 2012 - 20:08 | |
| instr( chaine1$,chaine2$) te renvoie déjà la position de départ de la chaine2$ dans la chaine1$
où est le souci ?.....
après tu peux jouer avec len() pour le nombre de caractères de chaque chaine$.... | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Problème avec la fonction 'instr'. Lun 16 Juil 2012 - 20:11 | |
| Salut pan59, Si c'est P que tu recherches, alors tu utilises INSTR comme ceci: P=instr (chaine1, chaine2) . P te donne la position du premier caractère de chaine2 dans chaine1. A+ Edit: Salut à Ygeronimi et Ambroise, vous m'avez doublé | |
|
| |
ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: Problème avec la fonction 'instr'. Lun 16 Juil 2012 - 20:19 | |
| Salut à toi... peu de monde sur le forum ces jours : c'est les vacances ! | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Problème avec la fonction 'instr'. Lun 16 Juil 2012 - 20:30 | |
| - Abroise a écrit:
- peu de monde sur le forum ces jours : c'est les vacances !
Oui, même Jack se fait rare..... A+ | |
|
| |
Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: Problème avec la fonction 'instr'. Lun 16 Juil 2012 - 21:07 | |
| - Citation :
- Oui, même Jack se fait rare.....
Je regarde le forum quotidiennement. Mais je viens juste de rentrer d'un long séjour professionnel à l'étranger et qui m'a littéralement épuisé (je n'ai pas pris beaucoup de repos). Je vais me reposer un peu, puis je vais continuer le compilateur Panoramic et Toonic. | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Problème avec la fonction 'instr'. Lun 16 Juil 2012 - 21:13 | |
| Ça c’est une bonne nouvelle. Repose-toi bien. A+
| |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 16 Juil 2012 - 21:30 | |
| Jack ....le retour Cà c'est une bonne nouvelle ! Reposes toi un peu ....mais pas trop ,on s'y habitue vite... | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Problème avec la fonction 'instr'. Mar 17 Juil 2012 - 7:46 | |
| Un peu de repos et çà repart, Bon courage... A+ | |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Problèmeavec la fonction instr. Mar 17 Juil 2012 - 7:53 | |
| Bonjour et merci à tous de votre aide.
Cette fonction me manquait vraiment.
Serait-il possible d'intégrer ce 3è paramètre dans la prochaine version de Panoramic ? | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Problème avec la fonction 'instr'. Mar 17 Juil 2012 - 13:20 | |
| - Pan59 a écrit:
- Serait-il possible d'intégrer ce 3è paramètre dans la prochaine version de Panoramic ?
Je ne comprend pas ce qui te manque dans cette fonction, c'est quoi le 3ème paramètre ? p=instr(chaine1$,chaine2$)j'ai repris la démo du manuel pour info: - Code:
-
dim a$,b$,p a$="bonjour les amis" b$="les" p=instr(a$,b$) print P ' résultat=9
Précises ce qui te manque... A+ | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 17 Juil 2012 - 13:25 | |
| | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec la fonction 'instr'. Mar 17 Juil 2012 - 13:27 | |
| Tu peux simuler ce paramètre comme suit: - Code:
-
pos% = instr(crit$,mid$(chaine$,p%,len(chaine$)) if pos%>0 then pos% = pos% + p% - 1
Cela fait exactement ce que tu cherches. PS Au besoin, je peux te faire une fonction DLL. J'ai une DLL nommée strings.dll, dans laquelle cette fonction trouverait logiquement sa place. | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Problème avec la fonction 'instr'. Mar 17 Juil 2012 - 14:01 | |
| Heu Klaus, t'es sur de ton coup... J'ai mis les variables pour essayer - Code:
-
dim crit$,chaine$,p%,pos%
crit$="les" chaine$="Bonjour les amis"
pos% = instr(crit$,mid$(chaine$,p%,len(chaine$)) if pos%>0 then pos% = pos% + p% - 1
caption 0,str$(p%)+"|"+str$(pos%)
A+ | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec la fonction 'instr'. Mar 17 Juil 2012 - 14:17 | |
| C'est comme ça que ça marche: - Code:
-
dim crit$,chaine$,p%,pos%
crit$="les" chaine$="Bonjour les amis" p% = 3 pos% = instr(mid$(chaine$,p%,len(chaine$)),crit$) if pos%>0 then pos% = pos% + p% - 1
caption 0,str$(p%)+"|"+str$(pos%)
Il fallait bien sûr mettre une valeur dans p% (0 n'étant pas une position valide) et j'avais malheurusement inversé les deux paramètres de INSTR. Donc, mon conseil est le suivant; - Code:
-
pos% = instr(mid$(chaine$,p%,len(chaine$)),crit$) if pos%>0 then pos% = pos% + p% - 1
J'ai ajouté la fonction instr(adr(crit$),adr(chaine$),p%) à strings.dll.
Dernière édition par Klaus le Mar 17 Juil 2012 - 20:57, édité 1 fois | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Problème avec la fonction 'instr'. Mar 17 Juil 2012 - 14:42 | |
| Dommage que tu n'aies pas adopté la syntaxe classique du basic, qbasic, freebasic... pos% = INSTR([départ%,] source$, chainecherchée$) et dommage que ça ne soit pas comme ça en natif Panoramic, la syntaxe actuelle resterait valable, ce serait simplement un ajout d'un paramètre optionnel (départ implicite = 1). Comme en basic. | |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Fonction instr. Mar 17 Juil 2012 - 15:03 | |
| Finalement, j'utilise la routine suivante:
dim a$, b$, position% a$ = "les amis de mes amis sont mes amis" b$ = "amis"
position% = 18
print instr(right$(a$,(len(a$)+1) - position%),b$)+position%-1 | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Problème avec la fonction 'instr'. Mar 17 Juil 2012 - 17:03 | |
| Merci Pan59, avec ta démonstration je comprend maintenant où tu voulais en venir "rechercher la chaine2 dans la chaine1, en donner la position, et continuer jusqu'à la fin de chaine1"J'ai adapté le prog de Klaus pour montrer la finalité - Code:
-
label go dim crit$,chaine$,p%,pos% p% = 1 crit$="amis" chaine$="Bonjour, les amis de mes amis sont mes amis"
go: ' Klaus pos% = instr(mid$(chaine$,p%,len(chaine$)),crit$) if pos%>0 then pos% = pos% + p% - 1 ' ----- print str$(pos%) if pos%>0 p%=pos%+1:goto go else end end_if
Ta demande initial est, à mon avis, pas très explicite. Avec ton dernier message on comprend ce que tu voulais.... A+ | |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Fonction instr. Mar 17 Juil 2012 - 17:41 | |
| Bonjour.
Connaissez-vous la date de sortie de la nouvelle version de Panoramic, incluant le passage de paramètres ?
Je l'attends avec impatience.
Merci. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec la fonction 'instr'. Mar 17 Juil 2012 - 21:22 | |
| J'ai ajouté la fonction requise dans strings.dll. Voici un extrait de la doc: - Code:
-
res% = dll_call3("instr",adr(crit$),adr(chaine$,p%) res% position de crit$ dans chaine$, à partir de la position p% crit$ chaîne de caractères à chercher chaine$ chaîne de caractères dans laquelle il faut chercher p% position à partir de laquelle on cherche Cette fonction retourne la position de la chaîne crit$ à l’intérieur de la chaîne chaine$, en cherchant à partir de la position p%. Si crit $n’est pas trouvé, la fonction retourne 0 (zéro). Sinon, la fonction retourne la position du premier caractère de crit$ dans chaine$.
Et voici comment on peut l'utiliser: - Code:
-
dim s$, mois$, p%, p1%, mm% mois$ = "Janvier,Février,Mars,Avril,Mai,Juin,Juillet,Août,Septembre,Octobre,Novembre,Décembre,"
mm% = 5 ' chercher le mois en lettres p% = 0 s$ = "," dll_on "strings.dll" while mm%>0 p1% = p% + 1 p% = dll_call3("instr",adr(s$),adr(mois$),p1%) mm% = mm% - 1 end_while message "Le mois 5 s'appelle "+mid$(mois$,p1%,p%-p1%) dll_off
end
| |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Utilisation de le dll. Mar 17 Juil 2012 - 21:32 | |
| Bonjour.
Merci de m'indiquer où l'on peut télécharger cette DLL.
Cordialement. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec la fonction 'instr'. Mar 17 Juil 2012 - 21:43 | |
| Comme pour toutes mes DLLs, c'est sur mon WebDav: Site: http://www.mydrive.ch/Identifiant: panoramic@klausgunther Mot de passe: panoramic123 Dossier: DLL's Il y a toutes mes DLLs, ainsi que les fichiers de documentation. La doc de strings.dll est dans Autres_dll.rtf. | |
|
| |
pan59
Nombre de messages : 367 Age : 67 Localisation : Wattignies Date d'inscription : 16/10/2011
| Sujet: Fonction instr. Dim 22 Juil 2012 - 17:30 | |
| Bonjour.
Merci Klaus pour le travail accompli.
Il me manque encore une fonction importante:
mid$ avec seulement 2 paramètres, je m'explique:
Comment extraire une sous-chaîne B$ à partir d'une chaîne A$, et à partir d'une position P, et cela jusu'à la fin de la chaîne A$.
Exemple ----------
B$ = mid2$ ("forum de discussion", 10) donnerait "discussion".
Pourrait-elle être également ajoutée dans la DLL ?
Merci de la réponse.. | |
|
| |
ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: Problème avec la fonction 'instr'. Dim 22 Juil 2012 - 17:55 | |
| Cette fonction existe :Voilà une solution : - Code:
-
dim chaine$ , position% chaine$ = "forum de discussions" position% = 10 print right$(chaine$,len(chaine$) - position% + 1)
Dernière édition par ambroise le Dim 22 Juil 2012 - 18:20, édité 1 fois | |
|
| |
Contenu sponsorisé
| Sujet: Re: Problème avec la fonction 'instr'. | |
| |
|
| |
| Problème avec la fonction 'instr'. | |
|