• Dateigröße:2 KB
  • Bereitgestellt:08.10.2016
  • Update:27.12.2018
  • Downloads:1833

Wolltest du den Inhalt des Ereignisfensters von EEP schonmal (z.B. zu dokumentarischen Zwecken) in eine Datei speichern, oder eine Fehlermeldung daraus ins Forum kopieren? Dann wirst du festgestellt haben, dass das nicht geht – den Text im Ereignisfenster kann man nur lesen, aber nicht weiterverarbeiten.

Mir ging es ähnlich, deshalb habe ich das kleine Lua-Modul PrintToFile geschrieben. Das tut, was der Name sagt: Alle Ausgaben, die in Lua mittels print(...) ins Ereignisfenster geschrieben werden, werden zusätzlich in eine Textdatei auf die Festplatte geschrieben. Von dort kann der Text dann einfach kopiert werden.

Die Ausgabe in der Datei kann sich von der im Ereignisfenster leicht unterscheiden, was die Nachkommastellen von Zahlen oder die Darstellung von nil betrifft. Auch von Lua selbst erzeugte Fehlermeldungen (wie Syntax-Fehler, falsche Kontaktpunkt-Einträge oder ähnliches) werden nicht in die Datei geschrieben – da „komme ich nicht dran“. Die Ausgabe von „normalem Text“ – und das dürfte ja der größte Teil sein – klappt aber zuverlässig.

Wenn das Ereignisfenster mittels clearlog() geleert wird, wird auch der Inhalt der Datei gelöscht.

Schnellstartanleitung

1. Installation

Nach dem Download die zip-Datei entpacken und die Installation.eep aufrufen, oder die PrintToFile_BH2.lua von Hand ins EEP-Verzeichnis in den Unterordner LUA kopieren.

2. Einbinden

Füge diese Zeile an den Anfang des Anlagen-Skripts (vor dem ersten clearlog()) ein:

require("PrintToFile_BH2")

3. Fertig

Hat das Einbinden geklappt, wird alles, was über print(...) in das Ereignisfenster ausgegeben wird, auch in die Datei print.txt geschrieben; diese ist dann im Resourcen- oder EEP-Ordner zu finden. Von da lassen sich alle Ausgaben problemlos kopieren.

Konfigurationsmöglichkeiten

Beim Einbinden kann das Verhalten des Skripts durch die Angabe von zusätzlichen Optionen gesteuert werden. Dazu muss die entsprechende Codezeile folgendermaßen ergänzt werden:

require("PrintToFile_BH2"){file="D:/output.txt", output=2}

Dabei werden folgende Parameter unterstützt:

  • f oder file: Dateiname der Ausgabedatei. Die Angabe kann als absoluter Pfad oder relativ zum Resourcen- bzw. EEP-Ordner erfolgen. Standardwert ist "print.txt"
  • o oder output: Ausgabemodus im EEP-Ereignisfenster. Mögliche Werte:
    • 0: keine Ausgabe (kann Sinn machen, wenn direkt die Ausgabedatei überwacht wird)
    • 1: normale Ausgabe (Standardwert)
    • 2: Ausgabe wie in Datei (diese kann sich von der normalen Ausgabe leicht unterscheiden)

Es müssen nur die Parameter angegeben werden, die verändert werden sollen. Folgende Zeile verwendet den vorgegebenen Dateinamen, aber unterdrückt die Ausgaben im Ereignisfenster:

require("PrintToFile_BH2"){o=0}

Changelog

v1.0 vom 27.12.2018:
  • Manche Fehlermeldungen werden ebenfalls in die Datei geschrieben.
    Das funktioniert für alle Fehlermeldungen, die im Lua-Code mittels error() oder assert() erzeugt werden (das kann auch in eingebundenen Fremd-Skripten passieren).
    Das funktioniert nicht bei Syntax-Fehlern, bei falschen Kontaktpunkt-Einträgen ("attempt to call a nil value") oder ähnlichem. An diese Fehlermeldungen "komme ich nicht heran", deshalb erscheinen sie nach wie vor nur im Ereignisfenster.
v0.2 vom 08.10.2016:
  • Ausgabe auch von Boolean-Werten möglich
  • Konfiguration beim Einbinden (statt vor dem Einbinden)
  • Zusätzliche Ausgabe-Optionen im Ereignisfenster: Original, wie in der Textdatei, oder gar nichts
  • Umstellung auf lokale Variablen
  • Installation per Modellinstaller
v0.1 (veröffentlicht am 29.08.2016 im MEF):
  • Ausgaben im Ereignisfenster werden zusätzlich in eine Datei auf die Festplatte geschrieben
  • Vorgabe des Dateinamens möglich