Basic Makro - Syntax Highlighting

Hallo Robert,

das größere Problem

"[...] bei Zeilen dieser Art stSql = "SELECT ""ID"" FROM """+NameTabelle1+""" WHERE """+NameTabellenFeld1+"""='"+stInhalt+"'" sind +NameTabelle1+ | +NameTabellenFeld1+ | +stInhalt+ rot eingefärbt [...]"

konnte ich mit

' 7 Datenbank-Makro (optional)

      If (DBM = "ja" ) Then

' 7.1 Zeichenkette rückfärben:
         oRD.SearchString = """.*(""'|'""|'.'|.'.).*"""
         aAttR(0).Name = "CharColor"
         aAttR(0).Value = Red
         oRD.SetReplaceAttributes(aAttR())
         oRD.ReplaceString = "&"
         oDok.replaceAll(oRD)

' 7.2 MacroCode rückfärben:
         oRD.SearchString = "\+[[:alnum:]|_]+\+"
         aAttR(0).Name = "CharColor"
         aAttR(0).Value = Green
         oRD.SetReplaceAttributes(aAttR())
         oRD.ReplaceString = "&"
         oDok.replaceAll(oRD)

' 7.3 +-Zeichen rückfärben:
         oRD.SearchString = "\+"
         aAttR(0).Name = "CharColor"
         aAttR(0).Value = BlueNA
         oRD.SetReplaceAttributes(aAttR())
         oRD.ReplaceString = "&"
         oDok.replaceAll(oRD)

      EndIf

lösen.

Dazu müsste ich noch wissen, welche Regeln für diese Bezeichner zwischen 2 +-Zeichen gelten. Ich habe mich jetzt mal an den Regeln für Variablen orientiert: alpha-numerisch und Unterstrich.

So etwas

FUNCTION String_to_SQL(st AS STRING)
IF InStr(st,"'") THEN
st = Join(Split(st,"'"),"''")

kann ich nicht kompensieren, zu viele Nebeneffekte. Da hilft nur alternative Kodierung, die unter dem Aspekt Kode-Lesbarkeit auch vertretbar ist, wenn man nicht manuell nachfärben möchte:

FUNCTION String_to_SQL(st AS STRING)
IF InStr(st,Chr(39)) THEN
st = Join(Split(st,Chr(39)),Chr(39) & Chr(39))

oder via

Dim EA As String : EA = Chr(39) ' Einfaches Anführungszeichen

FUNCTION String_to_SQL(st AS STRING)
IF InStr(st,EA) THEN
st = Join(Split(st,EA),EA & EA)

Gilt auch für:

Feldtrenner = Join(Split(aErster(1),"'"),"")

Dies

REM Funktion, um gegebenenfalls auch " ' " in einem String bei der Eingabe in die Datenbank zu ermöglichen. Bei dBase notwendig.

konnte ich durch Umstellung der Kolorierung der REM-Kommentare als letzten Makro-Abschnitt kompensieren.

Würde obiger Kommentar mit einem ' eingeleitet, müsste man sich für das " ' " eine andere Schreibweise/Formulierung ausdenken, sonst gibts ne Fehlfärbung.

Neues Ergebnis "Robert.odt" und "Robert_MOD.ods" (mit eingebauten Kodierungsvorschlägen bezüglich Chr(39)) via CC: an Dich.

Ich habe jetzt keine Fehlfärbungen (@ Robert_MOD.ods) mehr gefunden, was allerdings bei einem Test mit nur einem Datenbank-Makro nicht unbedingt repräsentativ ist ...

Gruß
Hans-Werner :-))