[VB 08]Editor Problem

09/12/2010 16:07 .тяµε.#1
Hi Com ...
Ich habe ein Problem und zwar ich bin ein Editor am basteln und in den will ich aber eine Syntaxhighlighting Funktzion drinne haben ... Gibts i-wo ein tut dazu o.ä. (habe in SuFu nix gefunden ... )
Bräuchte dringend eure hilfe.. .

Passendes Beispiel bei dem Eine Syntaxhighlighting Funtzion drin ist : [Only registered and activated users can see links. Click Here To Register...]

Thx im Vorraus ...
09/12/2010 16:54 Avarius210#2
Du meinst, dass "bekannte" Befehle blau markiert werden?
09/12/2010 20:21 .тяµε.#3
ja also bsp das "if" farbig da steht ^.^
09/12/2010 21:27 Madd Eye#4
Code:
    Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
        Dim exp As Regex = New Regex("if")
        Dim sel As Integer = RichTextBox1.SelectionStart

        For Each m As Match In exp.Matches(RichTextBox1.Text)
            RichTextBox1.Select(m.Index, m.Length)
            RichTextBox1.SelectionColor = Color.Blue
            RichTextBox1.SelectionStart = sel
            RichTextBox1.SelectionColor = Color.Black
        Next
    End Sub
einfach ne Richtextbox auf die Form ziehen
09/12/2010 21:43 HardCore.1337#5
ist aber eine unschöne Lösung.
09/12/2010 21:55 Madd Eye#6
Naja wieso den?
was wirklich schnellers als Regex gibts nicht

Es gäbe auch noch diese Lösung:
Code:
Private Sub Hilight(ByVal Wort As String)
        Dim Index As Integer = RichTextBox1.Text.IndexOf(Wort)

        Do Until Index = -1
            RichTextBox1.SelectionStart = Index
            RichTextBox1.SelectionLength = Wort.Length
            RichTextBox1.SelectionColor = Color.Blue

            Index = RichTextBox1.Text.IndexOf(Wort, Index + 1)
        Loop

        RichTextBox1.SelectionStart = Richtextbox1.Text.Length
        RichTextBox1.SelectionColor = Color.Black

    End Sub

    Private Sub RichTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RichTextBox1.TextChanged
        Hilight("Public")
    End Sub
Aber die ist Langsammer und meiner meinung wirklich unschön
09/13/2010 14:42 .тяµε.#7
Also die Codes entsprichen so einigermaßen dem was ich meinte :D das mit dem farbigen if klappt gut aber ist wirklich ein bisschen ünschön ... nur das bringt immer noch nicht ,dass wenn man ein Syntaxfehler macht das dann bsp.weise in der Fehlerliste steht :"In Zeile 9 ist ein Syntaxfehler" bei VB 08 ist das ja unten so ...
09/13/2010 18:35 OPO-Info#8
Quote:
Originally Posted by .тяµε. View Post
Also die Codes entsprichen so einigermaßen dem was ich meinte :D das mit dem farbigen if klappt gut aber ist wirklich ein bisschen ünschön ... nur das bringt immer noch nicht ,dass wenn man ein Syntaxfehler macht das dann bsp.weise in der Fehlerliste steht :"In Zeile 9 ist ein Syntaxfehler" bei VB 08 ist das ja unten so ...
Verwende ein Steuerelement für eine Box, in der die Fehler aufgelistet werden.
09/14/2010 12:09 .тяµε.#9
Quote:
Originally Posted by -Varken- View Post
Verwende ein Steuerelement für eine Box, in der die Fehler aufgelistet werden.
Gibts dazu ein Tutorial ... sry bin ein anfänger in VB ^^
09/14/2010 15:54 Madd Eye#10
[Only registered and activated users can see links. Click Here To Register...]
09/14/2010 16:08 .тяµε.#11
Quote:
Originally Posted by Madd Eye View Post
[Only registered and activated users can see links. Click Here To Register...]
thx das bringt mich weiter ...

aber zur ersten hilfe mit dem farbigen "if " könnte der poster den Code nochmal schicken wenn jz bsp.weise :" if , when , then " farbig sind weil wenn ich es versucht hatte kam syntaxfehler ^^
09/14/2010 18:25 nkkk#12
visl stausdio ist auch auch zum grossen teil in .Net gschreiben, du könntetst also also dir die visual staudio dlls mal mit dem reflactor angucken

(Microsoft.VisualStudio.Package.LanguageService und so)

ka ob das was bringrt aber ein veruch ist es denkich wert.
09/14/2010 19:27 .тяµε.#13
sry aver das war jz en bisschen unverständlich könntest du das mal verdeutlischen (von der aussprache her :awesome:) ?
09/14/2010 20:22 Madd Eye#14
Die verwendung des Reflectors ist verboten

Der verlangte Code
Code:
    Private Sub Highlight()
        Try

            Dim lines As String() = My.Computer.FileSystem.ReadAllText( _
          [COLOR="Red"]"Pfad/zur/Wort/Datei/wörter.txt"[/COLOR], System.Text.Encoding.Default).Split(vbCrLf)


            For Each wort As String In lines
                Dim exp As Regex = New Regex(wort)
                Dim sel As Integer = RichTextBox1.SelectionStart

                For Each m As Match In exp.Matches(RichTextBox1.Text)
                    RichTextBox1.Select(m.Index, m.Length)
                    RichTextBox1.SelectionColor = Color.Blue
                    RichTextBox1.SelectionStart = sel
                    RichTextBox1.SelectionColor = Color.Black
                Next

            Next

        Catch ex As Exception

        End Try

    End Sub
09/14/2010 20:49 .тяµε.#15
Quote:
Originally Posted by Madd Eye View Post
Die verwendung des Reflectors ist verboten

Der verlangte Code
Code:
    Private Sub Highlight()
        Try

            Dim lines As String() = My.Computer.FileSystem.ReadAllText( _
          [COLOR="Red"]"Pfad/zur/Wort/Datei/wörter.txt"[/COLOR], System.Text.Encoding.Default).Split(vbCrLf)


            For Each wort As String In lines
                Dim exp As Regex = New Regex(wort)
                Dim sel As Integer = RichTextBox1.SelectionStart

                For Each m As Match In exp.Matches(RichTextBox1.Text)
                    RichTextBox1.Select(m.Index, m.Length)
                    RichTextBox1.SelectionColor = Color.Blue
                    RichTextBox1.SelectionStart = sel
                    RichTextBox1.SelectionColor = Color.Black
                Next

            Next

        Catch ex As Exception

        End Try

    End Sub
soll in die wort datei dann einfach die wörter rein die farbig sein sollen oder versteh ich das falsch ?