Daten aus #cs / #ce einlesen / nutzen

  • Moin Moin.

    Ich habe mal eine Frage. Bei dem nachfolgenden Script, werden Daten aus dem Bereich zwischen #cs und #ce eingelesen und genutzt.

    Wie könnte ich ALLES einlesen was da steht?

    ...... Lieben Gruß, ........
    ...........
    Alina ............

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Ich habe die Deutsche Hilfe auf meinem PC und
    OrganizeIncludes ist beim Scripten mein bester
    Freund. Okay?

  • Bei dem nachfolgenden Script, werden Daten aus dem Bereich zwischen #cs und #ce eingelesen und genutzt.

    Wie kommst du darauf?

    Der Kommentarbereich wird ignoriert.

    Beim Erstellen eines Skriptes mithilfe eines Templates sieht der Skriptanfang dann so aus.


    Was da drin steht brauchst du doch nicht extra auslesen, auf diese Daten hast du doch über Makros und SciTE Properties Zugriff.

  • Hallo BugFix.

    $aResults[0] = MsgBoxConstants.au3

    $aResults[1] = StringConstants.au3

    Beide Resultate sind im Script in Zeile 8 und 9 zu finden und das ist zwischen #cs u. #ce. Oder ist es einfach schon zu spät am Tag das ich falsch ..... *kopfwirrwarr*

    Ich frage mich ja selber, wie das möglich ist, da der Kommentarbereich ja "eigentlich" wird ignoriert

    ...... Lieben Gruß, ........
    ...........
    Alina ............

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Ich habe die Deutsche Hilfe auf meinem PC und
    OrganizeIncludes ist beim Scripten mein bester
    Freund. Okay?

  • Beide Resultate sind im Script in Zeile 8 und 9 zu finden und das ist zwischen #cs u. #ce.

    Das ist bei dem Pattern schlicht Zufall, da dieses überhaupt nicht zwischen Kommentarbereich und sonstigem unterscheidet.

    Um zu verstehen, was dieses Pattern genau macht, habe ich es mal bisschen aufbereitet und kommentiert hingeschrieben:

    Code
    (?mx)
    ^\s*;.*(*SKIP)(?!)              # ignoriere reine Kommentarzeilen
    |^\s*\#.*\s*<.*(*SKIP)(?!)      # ignoriere #include-Zeilen deren Pfad in <> stehen (die mitgelieferten UDFs normalerweise)
    |^.*DllCall.*(*SKIP)(?!)        # ignoriere alle Zeilen, welche das Wort "DLLCall enthalten"
    |([\w\.\(\:\)*\\]+\w+.\.\w{3})  # matche eine Art Pfadangaben (nicht genau, da ":" und "*" irgendwo enthalten sein können), welche auf 3 Zeichen Dateiendung enden (könnten auch mehr sein - wird dann aber nicht mit gematcht) 


    Um also den Inhalt aus dem Comment-Block zu erhalten ist Exit's Ansatz wohl der pragmatischste und vor allem später am einfachsten wieder nachzuvollziehende.

    Soll es dennoch auf Teufel-komm-raus per RegEx geschehen, dann könnte man das Pattern gleich so gestalten, dass es auch mit verschachtelten Kommentarblöcken klar kommt:

  • 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...

    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

  • den zu assemblierenden Code zwischen die #cs und #ce geschrieben

    Ja, sowas ergibt Sinn. Dazu sollte man dann zwingend (so wie du es getan hast) die Kommentarblöcke benennen! Dann kann man diese Verfahrensweise für x-beliebige Ergänzungen nutzen.


    Ich habe oft zusätzliche Informationen, die in einer Zeile Platz hatten, als Kommentar mit spezifischem Start und Titel im Skript eingefügt.

    z.B.

    Code
    ;&&Titel1&& Info dazu
    ;&&Titel2&& Info dazu 
  • Moin zusammen.

    BugFix .
    Weil ich eine Erklärung dafür benötigte, warum das geht. Ich kann nicht etwas sehen das funktioniert und dann nicht wissen wieso das so ist.

    @alle anderen Poster/innen:
    Danke Danke Danke für die ausführlichen Erklärungen !

    ...... Lieben Gruß, ........
    ...........
    Alina ............

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Ich habe die Deutsche Hilfe auf meinem PC und
    OrganizeIncludes ist beim Scripten mein bester
    Freund. Okay?