Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:traffic:timetable:include_require

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

de:traffic:timetable:include_require [2020/12/29 20:16] (aktuell)
marting angelegt
Zeile 1: Zeile 1:
 +====== Einbindung externer Fahrpläne ======
 +
 +In [[de:​traffic:​start|Traffic]]-[[de:​traffic:​timetable:​start|Fahrplänen]] können weitere Fahrpläne eingebunden werden. Dies geschieht mit dem Befehl ''​$INCLUDE''​ oder ''​$REQUIRE''​.
 +
 +Zwei typische Einsatzszenarien für externe Fahrpläne sind zum einen sehr große Fahrpläne, die so auf mehrere Dateien aufgeteilt werden können, und zum anderen Fahrpläne, die als "​Bibliotheken"​ in mehreren Fahrplänen verwendet werden können. In letzterem Fall kann man sich beispielsweise komplette "​de:​traffic:​timetable:​foreground_background|Vorder- und Hintergründe]] in einem einzigen Fahrplan definieren und dann in beliebig vielen Fahrplänen verwenden.
 +
 +Die Syntax ist:
 +
 +<​code>​$INCLUDE Dateipfad</​code>​
 +
 +bzw.
 +
 +<​code>​$REQUIRE Dateipfad</​code>​
 +
 +Wenn der externe Fahrplan im selben Ordner liegt wie der, in den er eingebunden wird, reicht als Pfadangabe der Dateiname. Ansonsten ist die Angabe eines relativen oder absoluten Pfads nötig.
 +
 +===== Unterschied zwischen $INCLUDE und $REQUIRE =====
 +
 +Der Unterschied zwischen ''​$INCLUDE''​ und ''​$REQUIRE''​ liegt im Verhalten bei mehrfacher Verwendung. Wenn ein Fahrplan nur einmal eingebunden wird, gibt es keinen Unterschied.
 +
 +Mittels ''​$INCLUDE''​ wird ein externer Fahrplan jedes Mal wieder aufs Neue eingebunden und sein Inhalt jedes Mal aufs Neue ausgelesen. Wenn der Fahrplan [[de:​traffic:​timetable:​motion:​start|Bewegungszeilen]] enthält, die genau an dieser Stelle ausgeführt werden sollen, ist ''​$INCLUDE''​ der richtige Befehl. Ein denkbares Szenario wäre, einen Stapel Bewegungen in einen externen Fahrplan auszulagern und immer wieder in anderen Vorder- und Hintergründen einzubauen, ohne daß man sie mehrmals formulieren muß.
 +
 +Im Gegensatz dazu werden mittels ''​$REQUIRE''​ eingehängte Fahrpläne nur einmal eingelesen, egal, wie oft sie eingebunden sind. ''​$REQUIRE''​ ist die richtige Wahl für grundlegende einmalige Definitionen. Das spielt beispielsweise dann eine Rolle, wenn man eine ganze Anzahl an immer wieder verwendeten "​Bibliotheksfahrplänen"​ hat, die alle auf dieselben [[de:​traffic:​timetable:​options|Optionen]] zurückgreifen und auch für sich allein ausführbar sind. Diese Optionen müssen dann natürlich in den Bibliotheksfahrplänen zur Verfügung stehen, aber Optionen dürfen immer nur einmal definiert werden. Dann trägt man die Optionen in einen eigenen Fahrplan ein und bindet den per ''​$REQUIRE''​ in alle Fahrpläne ein, die diese Optionen benötigen.
 +
 +===== Abfrage des Status als Hauptfahrplan =====
 +
 +Traffic kann in Fahrplänen erkennen, ob sie direkt gestartet oder per ''​$INCLUDE''/''​$REQUIRE''​ extern eingebunden werden. Dafür wird der Wert von ''​FILELEVEL''​ abgefragt. Wenn dieser 1 ist, wurde der Fahrplan direkt gestartet. Höhere Werte zeigen die Verschachtelungstiefe per ''​$INCLUDE''/''​$REQUIRE''​ an.
 +
 +Die Syntax ist ähnlich wie bei Optionen eine Art Wenn/​Dann/​Sonst-Konstruktion:​
 +
 +<​code>​{FILELEVEL=1?​
 +Gültig, wenn der Fahrplan der Hauptfahrplan ist
 +?
 +Gültig, wenn der Fahrplan in einen anderen Fahrplan eingebunden ists
 +}</​code>​
 +
 +oder
 +
 +<​code>​{FILELEVEL=1?​Hauptfahrplan?​eingebunden}</​code>​
 +
 +Dabei ist der Sonst-Teil nebst dem vorangehenden zweiten Fragezeichen optional und kann bei Nichtbedarf weggelassen werden.
  
de/traffic/timetable/include_require.txt · Zuletzt geändert: 2020/12/29 20:16 von marting