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

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • 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

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • 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

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (28. Juli 2022 um 09:24)

  • 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

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl