Bonjour, je cherche une méthode pour développer un editeur perso avec coloration syntaxique.

Je charge un fichier de code, je parcours chaque ligne, puis je les insère un à une dans une variable string (monTexte). Jusque là çà va.

Ensuite, je veux effectuer différentes opérations de transformations, en fonction des mots, caractères, que je trouve dans monTexte.

J'utilise donc la fonction suivante:
Replace(monTexte, "unElement", "unebaliseUnElement"), par exemple, si je fais Replace(monTexte, "procedure", "\b procedure \b0"), tous les mots procédure de mon texte seront en gras.

Avec les balises genre "/*", je fais de même, sauf que je ne ferme la balise de couleur par exemple que lorsque je trouve "*/".

Sauf que j'ai un soucis avec les balises qui ne ferment pas. Par exemple le "//" pour commenter simplement une ligne. Je ne vois pas comment utiliser un replace sans affecter une transformation précédente.

J'imagine qu'il y a des méthodes mieux construites, ou plus claires, dans ce cas je ne serais pas contre que vous me la donniez, mais à défaut, si vous pouviez m'indiquer la marche à suivre, ce serait cool!


Je vous transmet mon code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Sub OuvrirToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OuvrirToolStripMenuItem.Click
        Dim FileDialog As New OpenFileDialog()
        FileDialog.FilterIndex = 1
        FileDialog.Filter = "Fichiers ssl (*.ssl)|*.ssl"
        FileDialog.ShowDialog()
 
        Dim file_num As Integer = FreeFile()
        Dim file_name As String = FileDialog.FileName
        FileOpen(file_num, file_name, _
            OpenMode.Input, OpenAccess.Read, OpenShare.Shared)
 
        Dim texte As String = "{\rtf1\ansi {\fonttbl {\f0\fnil\fcharset0\fprq0\fttruetype Helvetica;}{\f1\fnil\fcharset0\fprq0\fttruetype Bitstream Charter;}}"
        texte += "{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green150\blue10;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}"
        Do While Not EOF(file_num)
            Dim ligneEnCours As String = LineInput(file_num)
            texte += ligneEnCours & "\par"
        Loop
 
        texte = Replace(texte, "#", "{\f1\cb1\cf5 # ")
        texte = Replace(texte, "\par", "\par {\f1\cb1\cf1 ")
        texte = Replace(texte, "/*", " {\f1\cb1\cf6 /* ")
        texte = Replace(texte, "*/", "/* {\f1\cb1\cf1")
        texte = Replace(texte, "procedure", "\b procedure \b0 ")
 
        FrmFichier.RichTextBox1.Rtf = texte & "}"
 
        FileClose(file_num)
    End Sub
Merci!