COLORIER DU CODE SOURCE C++ ( EXPRESSIONS REGULIERES )

cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008 - 26 avril 2003 à 01:32
 Utilisateur anonyme - 15 févr. 2009 à 13:59
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/6867-colorier-du-code-source-c-expressions-regulieres

Utilisateur anonyme
15 févr. 2009 à 13:59
Bon Boulot, un petite astuce pour accélérer l'exécution de la coloration (c'est de l'ordre de 1 pour 1000) du mais

rtfbox.visible = false
ta procedure de coloration
rtfbox.visible = true

ça permet d'éviter le rafraichissement de la fenêtre par windows et ça passe complètement inaperçu pour l'utilisateur (c'est trop court pour être visible)

je vois que comme toutes les sources qui travaillent avec une RTFBox, tu rencontre le problème du scrolling, c'est a dire que lorsqu'on tape du code plus long que ce peut contenir la fenêtre, a chaque événement change() le curseur se retrouve en bas de page, ce qui peut vite devenir extrêmement pénible dans un IDE.

Bon code quand même... 8/10
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
10 févr. 2009 à 06:30
Il te faut ajouter une refference à la librairie "Microsoft VBScript Regular Expressions 5.5"
(de tête)

voir dans le menu Projet > References
NOURLINES Messages postés 16 Date d'inscription jeudi 17 août 2006 Statut Membre Dernière intervention 20 février 2009
9 févr. 2009 à 19:13
Je veux utilise ce code dans mon petite application mais jais reçu un message d erreur: (Dim Tok As Match),[User-defined type not defined]
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
23 févr. 2006 à 13:15
Salut Renfield, bravo c'est géant.
krissssss Messages postés 88 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 2 janvier 2007
2 août 2003 à 00:59
Je viens d'apprendre le ER lol
C'est pas difficile tou compte fais.
C'est un ensemble de règles simple qui font un truc compliqué!!!
C'est un langage dans un langage !!!
En fait, c'est tou con quand on utilise un for each ;-)
Sans toi, j'aurais pas planché dessus, alors merci :-)

ps: ça y est, on peut editer un treeview via un fichier texte qui se présente ainsi :

Nom_du_root
Sous_rep1.0.0.0
--->Sous_rep1.1.0.0
Sous_rep1.2.0.0
Sous_rep1.3.0.0
<---Sous_rep1.4.0.0
Sous_rep2.0.0.0
sous_rep3.0.0.0
--->Sous_rep3.1.0.0
sous_rep3.2.0.0
--->sous_rep3.2.1.0
sous_rep3.2.2.0
--->sous_rep3.2.2.1

Voilà :-)
"--->" = créer sous répertoire
"<---"=remonter d'un repertoir

NB: je peux le transformer pour en faire un utilitaire, tu en penses quoi ?
Aller, je vais dormir car il est l'heure 0h53 ;-)
krissssss Messages postés 88 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 2 janvier 2007
1 août 2003 à 13:36
OK, en gros, c'est ce que j'ai fais (sans les ER)
Tu as une idées d'où je peux aller chercher ce contrôle ?
Et aussi, ça t'interresserais de faire une coloration syntaxique sur base d'un treeview ? (ça aiderais pas mal de gens, ils n'auraient qu'a modifier le treeview pour créer une coloration pour un autre langage et sauver dans un .ini)
Voilà, la porte est ouverte :-)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 juil. 2003 à 21:32
oula ! c'est pas gagné !!
j'ai fait ce code il y a un moment, sans y retoucher depuis, mais bon, on va essayer d'expliquer davantage.

en fait, le programme utilise des Expressions régulières (ER) pour rechercher des motifs dans le texte.

c'est super pratique !! on dit en gros de rechercher du texte "qui ressemble à"...
on peu aussi evaluer une chaine par rapport a un motif, pour dire s'ils coincident. finalement, on peut recuperer des sous chaines :

pour tester un Mail :

".+@.+..+"

a@b.d est donc valide.....

avec des parentheses, on designes des parties a decouper :

"(.+)@(.+).(.+)" decoupera pour "toto@tutu.fr"
toto , tutu et fr

enfin, on est pas la pour un cours complet sur les ER !! c'est mega puissant !

donc, une fois le texte repondant a certains motifs trouvés, comme "//.*" qui designe les commentaires en ligne, on selectionne ledit texte, et on applique le style adequat.
krissssss Messages postés 88 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 2 janvier 2007
30 juil. 2003 à 18:43
Je suis perdu !
Où peut-on avoir une aide détaillée ?
Merci
Cyberdevil Messages postés 483 Date d'inscription mardi 10 juillet 2001 Statut Membre Dernière intervention 12 juillet 2006
6 mai 2003 à 21:53
ben dis donc ça vient balaise tout ça.. je me sens tout ptit a coté de vous :)
A+
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 avril 2003 à 22:14
oui , c'est ce que je commence a faire............
je dessine.......
cs_bigane Messages postés 46 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 12 février 2004
28 avril 2003 à 22:12
Pour finir, tu peux voir le problème sous un autre angle : l'objet ne fait que dessiner du texte. Un autre code peut récupérer les lignes et piloter les fontes. L'objet ne fait pas le parsing, c'est le conteneur qui accède à ses méthodes qui le fait. Du coup, tu recrée un RichTextBoxA ("A" pour avanced)...
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 avril 2003 à 22:02
vraiment très très interessant......... je vais voir a m'orienter vers ca , une fois les examen passés......
merci !
cs_bigane Messages postés 46 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 12 février 2004
28 avril 2003 à 21:59
Je te donne quelques éléments de mes recherches : l'objet final est une zone vide de type bouton ou image. Tu as une collection de lignes, chaque ligne est en réalité une structure complexe. Lorsque tu dois écrire une feuille, tu écris n lignes. Lorsque tu as un event Paint, tu n'écris que les zones du texte devant être redessinées. Donc calcul de zone avec les API. Le dessin d'une portion de ligne se fait mot après mot selon la couleur du fond et de la fonte désirée. Cette couleur dépends du token reconnu et de la sélection possible en inverse vidéo. Tu comprends alors la difficulté d'un tel code, c'est un sacré projet.
A+
Bigane.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 avril 2003 à 21:46
merci , j'avais deja pas mal d'idée ( thread , parsing partiel , (ce qui est visible...)

et si tu veux , je dois pouvoir adapter ma source , pour le vb....
cs_bigane Messages postés 46 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 12 février 2004
28 avril 2003 à 21:41
Salut, et bravo !
En plein dans ce que je cherche à créer depuis plusieurs semaines.
Sauf que... mon but est de créer un contrôle permettant de coloriser du basic. Mais le problème est le même. Ton code est très proche de ce que l'on doit faire mais tu est toujours solidaire du contrôle RichTextBox.
Cette solution est couteuse en vitesse : un code de 500 lignes sur mon PII 400 met une seconde à se rafaichir... insuportable.
Une autre approche réside dans l'exemple que tu peux trouver avec Dev-C++. C'est un compilateur c++ écrit en Pascal. Son contrôle d'édition est lui même écrit en Pascal : SynEdit. Tous les sources sont disponible et le résultat est de très bonne qualité.
Le site dev-c++ :
http://www.bloodshed.net/dev/index.html
Le site du projet (avec les sources) :
http://sourceforge.net/projects/dev-cpp
Le source avec le contrôle SynEdit:
http://prdownloads.sourceforge.net/dev-cpp/devcpp4src.zip?download
La lecture de ce projet peut te faire avancer dans l'objectif final.
Bonne continuation,
Bigane
cs_ace Messages postés 27 Date d'inscription dimanche 30 décembre 2001 Statut Membre Dernière intervention 22 mai 2004
26 avril 2003 à 10:44
Bravo c'est pas mal continu
cs_FredT Messages postés 65 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 11 avril 2009
26 avril 2003 à 09:41
Effectivement pour 'Microsoft VbScript Regular Expressions 5.5' : Sur win 2000, j'ai la 5.1 et apparament y'a beaucoup de changement :-( . C'est la version avec IE 6?
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
26 avril 2003 à 01:32
tu as te faire des amis à poster ça sur vbfrance :-P
Rejoignez-nous