Für mich bleibt noch immer die Frage, was im Kommentarblock für dich wichtig ist um es wann auszulesen und von wo aus (Datei geöffnet in SciTE oder innerhalb eines anderen Skriptes eingelesen).
Ich hatte in AssembleIt (leider sind so gut wie alle Threads zu diesem Thema im Forennirwana verschwunden) den zu assemblierenden Code zwischen die #cs und #ce geschrieben, weiterhin konnte man so auch Funktionen direkt aufrufen deren Namen unmittelbar an #cs angeschlossen waren...
#cs Funktion1
Bla ;dieser Kommentar wird entfernt
Blub
;~ per CTRL+q auskommentierte Zeilen werden auch entfernt
Tralala
#ce Funktion1
#cs Funktion2
Code1 ;dieser Kommentar auch
Code2
Code3
#ce Funktion2
$sFunc = "Funktion2"
$asm = _StringBetweenXX(FileRead(@ScriptFullPath), "#cs " & $sFunc, "#ce")
$startline = @extended ;zeile, in der die funktion beginnt
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $asm = ' & $asm[0] & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $startline = ' & $startline & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console
Func _StringBetweenXX($s_String, $s_Start, $s_End, $v_Case = -1)
$s_String &= ";" ;verhindert backtracking des regex
; Set case type
Local $s_case = ""
If $v_Case = Default Or $v_Case = -1 Then $s_case = "(?i)"
;auskommentierten code entfernen
$s_String = StringRegExpReplace($s_String, '(?m)((?:[^''";]*([''"]).*?\2)*[^;]*)(;.*$)', "$1") ;alles ausser kommentarzeilen stehen lassen
; Escape characters
Local $s_pattern_escape = "(\.|\||\*|\?|\+|\(|\)|\{|\}|\[|\]|\^|\$|\\)"
$s_Start = StringRegExpReplace($s_Start, $s_pattern_escape, "\\$1")
$s_End = StringRegExpReplace($s_End, $s_pattern_escape, "\\$1")
; If you want data from beginning then replace blank start with beginning of string
If $s_Start = "" Then $s_Start = "\A"
; If you want data from a start to an end then replace blank with end of string
If $s_End = "" Then $s_End = "\z"
Local $a_ret = StringRegExp($s_String, "(?s)" & $s_case & $s_Start & "(.*?)" & $s_End, 3)
If @error Then Return SetError(1, 0, 0)
$startline = 0
$mid = StringMid($s_String, 1, StringInStr($s_String, $s_Start, 0, 1))
StringReplace($mid, @CRLF, @CRLF, 0, 1)
SetExtended(@extended + 1)
Return $a_ret
EndFunc ;==>_StringBetweenXX
Alles anzeigen
So konnte man während der Entwicklung in Scite per F5 den Assembler(code) laufen lassen, ohne andere Dateien verwenden zu müssen.
Genau so kann man übrigens auch "versteckte" Funktionen in Kommentaren verwenden.
//EDIT
Die Startzeile der #ce benötige ich, um im Debugger die ggf. fehlerhafte Codezeile anzeigen zu können.
Fehlerzeile=Startzeile+LineOfError