COLORIER DU CODE SOURCE C++ ( EXPRESSIONS REGULIERES )

Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
- - Dernière réponse : AdCr
Messages postés
30
Date d'inscription
lundi 9 octobre 2000
Statut
Membre
Dernière intervention
16 février 2010
- 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

AdCr
Messages postés
30
Date d'inscription
lundi 9 octobre 2000
Statut
Membre
Dernière intervention
16 février 2010
-
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
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
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
-
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 -
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
-
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
-
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
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
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
-
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
-
ben dis donc ça vient balaise tout ça.. je me sens tout ptit a coté de vous :)
A+
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
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
-
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
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
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
-
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
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
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
-
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
-
Bravo c'est pas mal continu
cs_FredT
Messages postés
66
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
11 avril 2009
-
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
-
tu as te faire des amis à poster ça sur vbfrance :-P