Page 1 sur 2
Les expressions réguliére
Publié : sam. 11/juil./2009 16:52
par lannoy
Bonjour a tous,
voila je voudrais utilisé les regex pour faire quelque modif sur le texte qui se trouve dans editorgadget
Alors en faite j'ai une liste de mot que je vais mettre dans un tableau et je voudrais que si un de ces mot se trouve dans le gadget editor
EditorGadget(#champ ,10,40,WindowWidth(1)-20,WindowHeight(1)-50)
Sa change sa couleur !
C'est possible ça ?
Publié : sam. 11/juil./2009 18:12
par lionel_om
C'est pas sûr.
Modifier un texte pour lui ajouter des balises de style (HTML+CSS) se fait assez bien, mais je ne suis pas sûr que les RegEx soient suffisamment puissantes sous PB: elles ne vont pas te renvoyer les informations sur les groupes trouvés ce qui te permettrez de sélectionner la partie de texte en question puis de lui appliquer le style avec les SendMessage_(...).
Par contre y'a un format spécial (ou langage) pour mettre ne forme du texte dans les TextArea. Essaye de creuser de ce côté.
Ou plus simplement il doit y avoir les Libs Scientilla ou d'autres sur PureArea.net ou même sur ce forum qui répondront peut-être à tes besoins. Tout dépend si c'était un challenge ou si tu cherches une fonctionnalité toute faire.
/Liå
Publié : sam. 11/juil./2009 18:24
par lannoy
Et bien j'aurais préférer le faire moi même, je c'est qu'il existe QT scintilla mais je c'est pas m'en servir
Re: Les expressions réguliére
Publié : dim. 12/juil./2009 9:36
par Backup
....
Publié : dim. 12/juil./2009 10:52
par lannoy
C'est super, tu a fait ça juste pour moi ?
Mais ça me dit pas si on peut comparé un texte complet avec un tableau et pas un seul mot, enfin je vais regarder ton code et essayé de comprendre
Publié : dim. 12/juil./2009 11:04
par Backup
lannoy a écrit :C'est super, tu a fait ça juste pour moi ?
oui !
pour info je dispose chez moi d'une collection impressionnante de bout de code glané ça et la !
il me suffit de copier-coller
la recherche du bout de code est le plus long
le codage de ceci en utilisant le visual designer m'a pris un petit quart d'heure , alors que j'etais encore dans mon lit

(avec mon NC10)
ma meuf c'est barré depuis longtemps
Mais ça me dit pas si on peut comparé un texte complet avec un tableau et pas un seul mot, enfin je vais regarder ton code et essayé de comprendre
il suffit de lire le contenu de ton tableau , element par element (mot par mot)
et de soumettre ce mot a rechercher au prg !

Publié : dim. 12/juil./2009 11:23
par lannoy
Mais en faite je veut que si par exemple il ecrit dans la zone de texte
<?php
?>
c'est deux simbole se mette en bleu instantanément !
Publié : dim. 12/juil./2009 12:53
par Backup
lannoy a écrit :Mais en faite je veut que si il ecrit dans la zone de texte
<?php
?>
c'est deux simbole se mette en bleu instantanément !
si en purebasic se dit "IF" et lorsque tu veux verifier 2 conditions
tu met 2 conditions
if texte$="<?php"
color on ; tu met ici le code qui color
if texte$="?>"
color off ; tu met ici le code qui ne colore pas
endif
endif
je pense que tu as tout ce qu'il te faut pour faire ton prg
pour le probleme que tu souligne c'est encore plus simple que le prg que je t'ai mis !!
a savoir pour passer l'editeur en mode RTF
il faut lui envoyer cette chaine$
"
{\rtf1\ansi "
et a la fin de l'editeur la derniere chose a lui envoyer c'est
"
}"
donc tout ce qui est entre ces 2 balises c'est du RTF !!

sachant cela :
c'est simple
1- tu parcours toute les lignes de l'editeur
2 - lorsque tu rencontre "<?php" tu insere une des balises de coloration RTF
( couleur_rouge$="\cf4 " ; couleur_noir$=" \cf0 " ; couleur_noir$="\cf9")
voir le tableau des couleurs inclues dans mon code (procedure a Olivier)
puis tu insere le text a colorer , et ensuite tu insere la balise de fin de coloration (" \cf0") puis tu insere ta balise php ("?>") et le reste tu text !
3- tu recolle le tout dans l"éditeur
tu poursuis Goto 1-
fini !
voila en mettant comme ça par ecris ce qu'il te faut faire, ça peux aider
en tout cas tu as tout les outils pour le faire
un bon en php ne devrai pas avoir de soucis avec si peu

Publié : dim. 12/juil./2009 13:21
par lannoy
Je pige rien a ça
{\rtf1\ansi
Je comprend vraiment pas ce que tu veut dire pour moi j'ai compris ça
Si je fait ça sa marche :
Code : Tout sélectionner
if champ$="<?php"
color on RGB(2, 24, 253)
if champ="?>"
color on RGB(2, 24, 253)
endif
endif
Sa va par exemple donné sa
<?php
echo'J'ai compris ?';
?>
Publié : dim. 12/juil./2009 13:39
par Backup
.....
Publié : dim. 12/juil./2009 13:44
par lannoy
Ok c'est super, un peut comme les balise span et la posibilité d'utilisé RGB direct dans le html .
A je suis content je vais suivre ton conseil pour voir ça !
Et donc pour coloré <?php en bleu il me faut faire sa
If texte$="<?php"
SetGadgetText(#champ, "{\rtf1\ansi {\colortbl ;\red0\green0\blue255;} \cf1 <?php \cf0}")
EndIf
J'ai testé sa marche mais sa ecrit tout le temp en bleu ensuite, il y as pas une fonction str_replace ?? Pour construire un parser
J'ai tenté un truc, j'avais pas beaucoup d'espoire mais
Code : Tout sélectionner
texte$ = GetGadgetText(#champ)
If texte$ <> ""
ReplaceRegularExpression(#champ, "<?php", "{\rtf1\ansi {\colortbl ;\red0\green0\blue255;} \cf1 <?php \cf0}")
SetGadgetText(#champ, texte$)
EndIf
Sa me donne une erreur des que je veut écrire dans le gadget .
Publié : dim. 12/juil./2009 13:49
par Backup
........
Publié : dim. 12/juil./2009 13:59
par lannoy
Ton code me permet pas de faire ce que je veut, j'ai vue qu'il marchais mais comment dire Si le texte contient sa tu colore CE mot de cette couleur
Publié : dim. 12/juil./2009 14:11
par lannoy
Si je te suis, je suis sensée faire ça
Code : Tout sélectionner
If CreateRegularExpression(0, "<?php")
Result$ = ReplaceRegularExpression(0, "<?php", "{\rtf1\ansi {\colortbl ;\red0\green0\blue255;} \cf1 <?php \cf0 \colorb0}")
Debug Result$ ; Will print "--- ABc --- abc"
Else
Debug RegularExpressionError()
EndIf
Le blem est que sa marche pas :'
EDIT:
J'ai trouvé sa dans la doc
Debug ReplaceString("This is Art", " is", " was")
Ya pas moyen de faire un truc comme sa
Debug ReplaceString(texte$, " <?php", " {\rtf1\ansi {\colortbl ;\red0\green0\blue255;} \cf1 <?php \cf0 \colorb0}")
Parceque sa colore pas
Publié : dim. 12/juil./2009 14:22
par Backup
..........