Page 1 of 1

Fonction strfind

Posted: 05 Sep 2006, 09:10
by autofill
C'est encore moi :wink:

En utilisant l'action mouvement du curseur avec click gauche et ensuite action touche "ctrl + c", j'ai mis une chaîne de caractères dans le presse papier.
J'ai ensuite recopié ce texte dans une variable, et j'aimerais bien découper la chaîne pour n'en récupérer qu'une partie.

La chaîne ressemble à ceci : "aaa bbb ccc ddd".
La valeur à récupérer se trouve entre le 2ème et le 3ème espace ("ccc").

Il y a actuellement moyen de récupérer cette valeur, mais je trouve que c'est lourd à implémenter.

1) dans varstr : mettre le contenu du presse papier -> "aaa bbb ccc ddd"
2) dans varpos1 : mettre la position du premier espace qui se trouve dans varstr (via strfind) -> 4
3) dans varpos2 : mettre la longueur de varstr -> 15
4) dans varstr : placer le substring de varstr à partir de varpos1 + 1 jusque varpos2 -> "bbb ccc ddd"
5) dans varpos1 : mettre la position du premier espace qui se trouve dans varstr -> 4
6) dans varstr : placer le substring de varstr à partir de varpos1 + 1 jusque varpos2 -> "ccc ddd"
7) dans varpos1 : mettre la position du premier espace qui se trouve dans varstr
8 ) dans varstr : placer le substring de varstr à partir de la position 1 jusque varpos1 - 1 -> "ccc"

Ca va encore, mais si la valeur que je souhaite récupérer se trouve après le 10ème espace, à ce moment j'aurais sans doute fait une boucle pour alléger le code (le temps d'exécution n'étant pas allégé pour la cause).

N'y aurait-il pas plutôt moyen d'ajouter une nouvelle fonction ou alors d'ajouter un paramètre à la fonction strfind pour lui demander de chercher la xème occurence d'une chaîne de caractères (par défaut ce serait la première occurence)?

De cette façon :

1) dans varstr : mettre le contenu du presse papier -> "aaa bbb ccc ddd"
2) dans varpos1 : mettre la position du 2ème espace qui se trouve dans varstr -> 8
3) dans varpos2 : mettre la position du 3ème espace qui se trouve dans varstr -> 12
4) dans varstr : placer le substring de varstr à partir de varpos1 + 1 jusque varpos2 - 1 -> "ccc"

Et j'ai une autre petite question, dans l'exemple ci-dessus j'utilise le séparateur "caractère d'espacement", mais en réalité j'ai une tabulation. Est-ce que je peux indiquer \t ou qqch du style pour faire la recherche sur ce caractère?

Merci d'avance.

Posted: 05 Sep 2006, 19:18
by Jmgr
N'y aurait-il pas plutôt moyen d'ajouter une nouvelle fonction ou alors d'ajouter un paramètre à la fonction strfind pour lui demander de chercher la xème occurence d'une chaîne de caractères (par défaut ce serait la première occurence)?
Oui c'est une idée, je verais ca ce week-end car en ce moment je travaille du matin au soir pour un job d'été. :P
Et j'ai une autre petite question, dans l'exemple ci-dessus j'utilise le séparateur "caractère d'espacement", mais en réalité j'ai une tabulation. Est-ce que je peux indiquer \t ou qqch du style pour faire la recherche sur ce caractère?
Après tests cela ne semble pas fonctionner, strfind ne cherche que les caractères "\" et "t", mais pas une tabulation :/
Je pense créer une fonction charfind qui permettra de trouver un caractère.

Posted: 05 Sep 2006, 19:20
by Jmgr
Question à part : Programmes-tu en c++ ?
En fait je compte rendre Actionaz Open Source prochainement, donc si tu veux participer... :wink:

Posted: 05 Sep 2006, 21:49
by autofill
Jmgr wrote:Oui c'est une idée, je verais ca ce week-end car en ce moment je travaille du matin au soir pour un job d'été. :P
Si ça prend trop de temps, ce n'est pas la peine de développer la fonctionnalité rien que pour moi! En fait j'utilise Actionaz sur une page web, et rien ne m'empêche de taper du code javascript dans la barre d'adresse. Donc en gros, via javascript je crée un champ sur la page, je colle le texte dedans via Actionaz (ainsi les tabulations sont conservées), et ensuite j'applique un code javascript qui modifie le champ pour ne me retourner que la valeur attendue. Ce sera juste un peu plus lent vu que je devrai lancer plusieurs commandes Actionaz alors que, comme je l'ai dit il y a sûrement moyen de faire mieux, mais bon... je ne voudrais pas abuser :wink:
Jmgr wrote: Après tests cela ne semble pas fonctionner, strfind ne cherche que les caractères "" et "t", mais pas une tabulation :/
Je pense créer une fonction charfind qui permettra de trouver un caractère.
Ce serait une bonne idée! Je vais toujours faire quelques tests de mon côté, maintenant que je sais que c'est du C++ derrière il y a peut-être une solution :?
Jmgr wrote:Question à part : Programmes-tu en c++ ?
En fait je compte rendre Actionaz Open Source prochainement, donc si tu veux participer... :wink:
Ah ben c'est une bonne nouvelle. Comme tu t'en doutes un peu, j'ai de bonnes connaissances en programmation. Mais j'ai malheureusement peu de pratique dans tout ce qui est programmation avec API. J'ai fait du C/C++ il y a 5-6 ans, mais j'en suis resté au stade DOS :wink: . Par contre j'ai acquis de bonnes connaissances dans tout ce qui touche au web. Donc de là à me lancer dans du code C++, je ne pense pas que j'aurai vraiment le temps de m'y mettre en ce moment, mais par contre si tu veux de l'aide pour le site je peux t'aider, après ce que tu m'as développé, je te dois bien ça. Cela dit, lorsque le code sera téléchargeable, j'irai très certainement voir comment il a été fait car ça m'intéresse.

J'ai vu que tu as aussi développé quelques jeux dont un avec lequel il était possible de jouer en ligne, dommage que je ne l'aie pas vu plus tôt car ça m'aurait bien plus d'affronter d'autres adversaires. En plus, je parie que j'aurais pu tous vous battre grâce à Actionaz :wink:

Posted: 06 Sep 2006, 16:20
by Jmgr
Si ça prend trop de temps, ce n'est pas la peine de développer la fonctionnalité rien que pour moi! En fait j'utilise Actionaz sur une page web, et rien ne m'empêche de taper du code javascript dans la barre d'adresse. Donc en gros, via javascript je crée un champ sur la page, je colle le texte dedans via Actionaz (ainsi les tabulations sont conservées), et ensuite j'applique un code javascript qui modifie le champ pour ne me retourner que la valeur attendue. Ce sera juste un peu plus lent vu que je devrai lancer plusieurs commandes Actionaz alors que, comme je l'ai dit il y a sûrement moyen de faire mieux, mais bon... je ne voudrais pas abuser
Mais non :P

De toute facon pour chaque version je fait d'abord la somme de toutes les idées d'améliorations et puis quand j'ai le temps je m'y met.
Quand toutes les améliorations prévues sont prêtes je sort une nouvelle version.

Si Actionaz est tel qu'il est aujourd'hui c'est grâce à ces contributeurs, sans eux le programme serait bien pauvre...

Et je suis sûr que cette fonctionnalité servira à d'autres :wink:
Ah ben c'est une bonne nouvelle. Comme tu t'en doutes un peu, j'ai de bonnes connaissances en programmation. Mais j'ai malheureusement peu de pratique dans tout ce qui est programmation avec API. J'ai fait du C/C++ il y a 5-6 ans, mais j'en suis resté au stade DOS Wink . Par contre j'ai acquis de bonnes connaissances dans tout ce qui touche au web. Donc de là à me lancer dans du code C++, je ne pense pas que j'aurai vraiment le temps de m'y mettre en ce moment, mais par contre si tu veux de l'aide pour le site je peux t'aider, après ce que tu m'as développé, je te dois bien ça. Cela dit, lorsque le code sera téléchargeable, j'irai très certainement voir comment il a été fait car ça m'intéresse.
Ok, pas de problème, dès que j'aurais mon nouveau PC je m'occuperai du port sous Linux et de rendre Actionaz OpenSource.
J'ai vu que tu as aussi développé quelques jeux dont un avec lequel il était possible de jouer en ligne, dommage que je ne l'aie pas vu plus tôt car ça m'aurait bien plus d'affronter d'autres adversaires. En plus, je parie que j'aurais pu tous vous battre grâce à Actionaz
Ah oui, mais si tu parles d'Altagena, il n'est pas encore terminé :p
Mais le projet est tellement vaste que je pense que quelques années de seront pas de trop avant de sortir la version 1.0... À moins que je trouve d'autres développeurs.