COLORIER DU CODE SOURCE C++ ( EXPRESSIONS REGULIERES )
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 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.
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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és16Date d'inscriptionjeudi 17 août 2006StatutMembreDernière intervention20 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és571Date d'inscriptionvendredi 30 décembre 2005StatutMembreDernière intervention12 juillet 20123 23 févr. 2006 à 13:15
Salut Renfield, bravo c'est géant.
krissssss
Messages postés88Date d'inscriptionjeudi 26 décembre 2002StatutMembreDerniè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 :
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és88Date d'inscriptionjeudi 26 décembre 2002StatutMembreDerniè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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és88Date d'inscriptionjeudi 26 décembre 2002StatutMembreDerniè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és483Date d'inscriptionmardi 10 juillet 2001StatutMembreDernière intervention12 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 28 avril 2003 à 22:14
oui , c'est ce que je commence a faire............
je dessine.......
cs_bigane
Messages postés46Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention12 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és46Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention12 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és46Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention12 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és27Date d'inscriptiondimanche 30 décembre 2001StatutMembreDernière intervention22 mai 2004 26 avril 2003 à 10:44
Bravo c'est pas mal continu
cs_FredT
Messages postés65Date d'inscriptionmardi 18 février 2003StatutMembreDernière intervention11 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és3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 26 avril 2003 à 01:32
tu as te faire des amis à poster ça sur vbfrance :-P
15 févr. 2009 à 13:59
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
10 févr. 2009 à 06:30
(de tête)
voir dans le menu Projet > References
9 févr. 2009 à 19:13
23 févr. 2006 à 13:15
2 août 2003 à 00:59
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 ;-)
1 août 2003 à 13:36
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 :-)
30 juil. 2003 à 21:32
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.
30 juil. 2003 à 18:43
Où peut-on avoir une aide détaillée ?
Merci
6 mai 2003 à 21:53
A+
28 avril 2003 à 22:14
je dessine.......
28 avril 2003 à 22:12
28 avril 2003 à 22:02
merci !
28 avril 2003 à 21:59
A+
Bigane.
28 avril 2003 à 21:46
et si tu veux , je dois pouvoir adapter ma source , pour le vb....
28 avril 2003 à 21:41
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
26 avril 2003 à 10:44
26 avril 2003 à 09:41
26 avril 2003 à 01:32