let m = Regex.Match(X.Text, "\\b(select)|(where)|(from)\\b", RegexOptions.IgnoreCase)
il met en surbrillance uniquement Select, donc je suppose que le problème est dans ma syntaxe Regex.Match, mais je ne peux pas voir où?Regex Match un des chaînes
avec alll les changements ma solution actuelle est à la recherche comme ceci:
module SQL_Highlighing
open System.Runtime.InteropServices
module Lock =
[<DllImport(@"User32", CharSet = CharSet.Ansi, SetLastError = false, ExactSpelling = true)>]
extern void LockWindowUpdate(int hWnd)
open System.Text.RegularExpressions
open System.Drawing
type SyntaxRTB() =
inherit System.Windows.Forms.RichTextBox()
override X.OnTextChanged(e : System.EventArgs) =
base.OnTextChanged(e); X.ColorTheKeyWords()
member X.ColorTheKeyWords() =
let HL s c =
let color(m : Match, color : Color) =
X.SelectionStart <- m.Index
X.SelectionLength <- m.Length
X.SelectionColor <- color
Regex.Matches(X.Text, "\\b" + s + "\\b", RegexOptions.IgnoreCase) |> fun mx ->
for m in mx do if (m.Success) then color(m,c)
let SelectionAt = X.SelectionStart
Lock.LockWindowUpdate(X.Handle.ToInt32())
HL "(select)|(where)|(from)|(top)|(order)|(group)|(by)|(as)|(null)" Color.Blue
HL "(join)|(left)|(inner)|(outer)|(right)|(on)" Color.Red
HL "(and)|(or)|(not)" Color.DarkSlateGray
HL "(case)|(when)|(then)|(else)|(end)" Color.BurlyWood
HL "(cast)|(nvarchar)|(bit)" Color.BlueViolet
HL "(datepart)" Color.Teal
X.SelectionStart <- SelectionAt
X.SelectionLength <- 0
X.SelectionColor <- Color.Black
Lock.LockWindowUpdate(0)
Je doute que cela soit lié à votre problème, mais votre signature P/Invoke est erronée. Il devrait être 'extern bool LockWindowUpdate (nativeint hWnd)' et 'SetLastError' devrait être défini sur' false'. – ildjarn
Hhm, il ne fera que mettre en évidence la première sélection, où ou à partir de. Utilisez 'Regex.Matches' à la place. Cela peut être le problème (n'avez pas testé votre code). –
Aussi, qu'est-ce que vous essayez d'accomplir avec les '\\ b's? Attendez-vous vraiment des littéraux de retour arrière dans vos données d'entrée? – ildjarn