
	Trainsimulator - Utility "TSUtil"


Version : 3.2
Stand   : 26.08.2005

Bedienungsanleitung:

Das vorliegene Utility soll die Wartung und Modifikation von Strecken erleichtern bzw.
ermoeglichen. Es vereint verschiedene Funktionen, die im folgenden beschrieben werden.

Einleitung:
Zur Ausfuehrung dieses Utilities wird lediglich eine "Java-Runtime-Umgebung" vorausgesetzt.
Nach der Installation (siehe: Installation des ...) kann das Utility sofort verwendet werden.
Der Aufruf erfolgt GRUNDSAETZLICH und unabhaengig von der Funktion, als Java-Applikation aus
einem DOS-Fenster. Durch den Verzicht auf eine grafische Oberflaeche ist die Aktivierung
der einzelnen Funktion zwar etwas "kryptisch" und die Ausgaben (Fehler und Meldungen)
erfolgen in das DOS-Fenster aber die Ausfuehrung ist relativ effektiv.
Wenn man die Standard - Pufferwerte des DOS-Fensters veraendert (z.B.400 Zeilen) kann man
alle Ausgabezeilen - unabhaengig von einer LOG-Datei - einfach pruefen. Dennoch ist es
sinnvoll eine LOG-Datei schreiben zu lassen, da diese weitere Informationen enthaelt.

WICHTIG:
  Bei der Eingabe der Befehle muss grundsaetzlich auf Gross-Kleinschreibung geachtet werden.
  Das Programm reagiert zwar nicht immer sensitiv auf die Art der Eingabe, doch wenn man immer
  auf Gross-Kleinschreibung achtet, werden manche Fehler vermieden.

WICHTIG:
  Immer eine Datensicherung herstellen, bevor das Utility benutzt wird.

SEHR WICHTIG:
  Mit der Version 3 wurde die Vorgehensweise bei ALLEN Funktionen (soweit nicht anders angegeben)
  in der Weise geaendert, dass nicht mehr ALLE Dateien eines Verzeichnisses bearbeitet werden,
  sondern nur die Dateien, die sich auf BESIEDELTE Strukturquadrate beziehen. Ggf. ist damit eine
  Korrektur der Strecke durch den Streckengeometrie-Editor notwendig.

Hintergrund zu den World-Dateien:
  Um World-Dateien veraendern zu koennen, muessen diese in der "unkomprimierten Textform"(UT) vorliegen:
  Die World-Dateien (.w) koennen insgesamt in VIER verschiedenen Versionen vorliegen:
	- [UT] unkomprimierte Text - Datei (Unicode, Kennung beginnt mit: "SIMISA@@")
	- [KT] komprimierte Text - Datei (Unicode, Kennung beginnt mit: "SIMISA@F")
	- [UB] unkomprimierte Binaer - Datei (ASCII, Kennung beginnt mit: "SIMISA@@")
	- [KB] komprimierte Binaer - Datei (ASCII, Kennung beginnt mit: "SIMISA@F")
  Bemerkung: Folgende Namenskonventionen werden von mir benutzt:
	Das 'unkomprimierte Text'-Format wird auch als 'Erweitertes Format' bezeichnet, waehrend
	das 'unkomprimierte Binaer'-Format auch als 'Reduziertes Format' bezeichnet wird.
	Beide Formate koennen zusaetzlich durch den Z-Lib-Algorithmus komprimiert werden.
  Mit Hilfe des vom TS mitgelieferten Utilities "ffeditc_unicode" koennen die World - Dateien zwischen
  den verschiedenen Formen umgewandelt werden. Ein Aufruf wandelt dabei um:
	a) Option /u :	UT->UB; UB->UT; KT->UB; KB->UT
	b) Option /c :	UT->KB; UB->KT; KT->KB; KB->KT
  Es ist somit ggf. notwendig eine World - Datei mehrfach zu konvertieren (Option /u), um sie in der
  Form UT vorliegen zu haben.(KT->UB->UT) Die UT-Form ist die einzige Version, die mit Hilfe eines
  Editors veraendert werden kann. Um zu entscheiden welche Form vorliegt, koennen die ersten Zeichen
  jeder Datei gelesen werden und mit den Kennungen verglichen werden. Dabei muss die Datei erst als
  ASCII Datei gelesen werden um zu pruefen, ob eine binaere Form vorliegt. Nur wenn dabei Unsinn
  gelesen wird, kann ein zweiter Versuch mit dem Lesen von Unicode-Daten erfolgen. Das Lesen einer
  binaeren Datei als Unicode-Datei erzeugt einen Lese - Fehler, da ungueltige Unicode - Zeichen
  erkannt werden.
  Die Umwandlung von "ffeditc_unicode" erfolgt nicht fehlerfrei. Schon eine Umwandlung bewirkt, dass
  verschiedene Objekte nicht immer sichtbar und nicht mehr manipulierbar sind. Der Streckeneditor ist
  jedoch in der Lage jeden Quadranten korrekt in die Text - Form [UT] umzuwandeln. Ein Vergleich der
  Ergebnisse zeigt, dass im Bereich der "ViewDbSphere" - Eintraege erhebliche Struktur - Unterschiede
  auftraten. Bei der Umwandlung mit Hilfe von "ffeditc_unicode" wird eine erheblich tiefere Schachtelung
  dieser Elemente und damit eine groessere Satzlaenge erzeugt.
  Um einen Quadranten fehlerfrei in die UT - Form umzuwandeln ist es deshalb notwendig, den Streckeneditor
  zu nutzen.

  Alternativ koennen die Programme 'Comp' und 'DeComp' von Martyn Griffin zum Einsatz gelangen, die die
  Komprimierung/Dekomprimierung fehlerfrei vornehmen(recmp119.zip). Diese Routine ist/war auch in
  Route - Riter implementiert.
  ACHTUNG: Diese Programme koennen mit World-Dateien, die in der KT-Version vorliegen nicht korrekt umgehen.
	In diesem Fall ist "ffeditc_unicode" zu nutzen.

  Auch mit dem neuen Programm-Modul von Okrasa Ghia kann eine effektive Komprimierung/Dekomprimierung/
  Expandierung/Reduzierung durchgefhrt werden. Dieses Modul wird auch von Route-Riter ab Version 6 verwendet.
  Es zeichnet sich durch eine hohe Performance aus und basiert ebenfalls auf den Algorithmen von 
  Martyn Griffin. Auch fr dieses Modul ist ein Stand-alone-programm verfgbar. (Zipper/tk_utils)
  ACHTUNG: Dieses Modul bentigt die 'framwork.net'-Umgebung von Microsoft.

  Auf Grund der Zusammenarbeit mit Mike Simpson (Route-Riter) ist ab der Version 3.0.140 auch eine
  Komprimierung-/Dekomprimierungsroutine in TSUtil implementiert. Diese ist in der Lage beim Lesen einer
  World-, Tile- oder Shape-Datei, diese implizit zu dekomprimieren und beim Schreiben wieder zu komprimieren.
  Damit entfaellt die Vorraussetzung, dass eine TSUtil-Funktion eine dekomprimierte Datei fordert.

  Bemerkung: Die Schienendatenbank liegt IMMER in einer Form vor, die direkt bearbeitet werden kann.



Eine kompakte Zusammenfassung(Hilfe) erhaelt man mit dem Aufruf:
	C>java TSUtil ?

Beim Aufruf von TSUtil koennen 'Systemoptionen' eingefuegt werden, die das Java-Runtimesystem steuern.
Diese sind von der Version dieses 'Environments' abhaengig. So kann z.B. durch die Option '-Xmx256m'
der verfuegbare Speicher auf 256MB vergroessert werden (Default=64MB):
	"java -Xmx256m TSUtil ...." 

Vor den einzelnen Funktionspezifikationen, koennen jeweils GLOBALE OPTIONEN angegeben werden. Diese sind 
immer ohne Syntaxfehler angebbar, auch wenn eine einzelne Funktion diese Option nicht unterstuetzt.
Welche globale Option jeweils verwendet wird, ist in der Aufruf-Beschreibung der einzelnen Funktionen
angegeben. Folgende globale Optionen sind moeglich:

 -l	: Mit dieser Option wird die Log-Option auf eine Datei mit dem FESTEN Namen "TSUtil.log"
		aktiviert, die im aktuellen Verzeichnis angelegt/ueberschrieben wird. Die zusaetzliche
		Angabe einer Log-Datei innerhalb des Funktionsaufrufs ueberschreibt diesen Namen.
 -k	: Mit Hilfe dieser Option koennen die Kennungen der einzelnen Meldungen angezeigt werden.
		Sie bewirkt, dass bei der Ausgabe einer Meldung in die Log-Datei, dieser Meldung die
		Meldungskennung in geschweiften Klammern vorangestellt wird.
 -e	: Diese globale Option bewirkt, dass die Ausgabe von 'Hinweisen' und 'Warnungen' sowohl
		in der Log-Datei als auch auf dem Bildschirm unterdrueckt wird
 -w	: Diese globale Option bewirkt, dass die Ausgabe von 'Hinweisen' sowohl in der Log-Datei
		als auch auf dem Bildschirm unterdrueckt wird
 -m<id>	: Mit dieser Option kann die Ausgabe einzelner Meldungen sowohl in der Log-Datei als auch
		auf dem Bildschirm unterdrueckt werden. <id> ist dabei die Kennung der Meldung, deren
		Ausgabe unterdrueckt werden soll. Diese Kennung kann aus der aktuellen Datei
		"TSErrMsg_xx.properties" entnommen werden. Diese globale Option kann mehrmals angegeben
		werden.
		ACHTUNG: Bei der Angabe der Meldungskennung muss auf Gross-/Klein-Schreibung
			geachtet werden.

Damit sieht der Aufruf von TSUtil insgesamt wie folgt aus:
	java [<system-optionen>] TSUtil [<globale-optionen>] <funktionsname> [<lokale-optionen>] ...

Hinweis: Ab sofort ist das Utility auch in Form einer jar-Datei verfuegbar. Derjenige, der sich
	damit auskennt, kann die einzelnen Funktionen auch aus dieser jar-Datei aktivieren. Damit
	ist zum Aufruf auch eine Verknuepfung erstellbar.
	z.B: "javaw -jar [<system-optionen>] TSUtil.jar ..."
	     "java -jar [<system-optionen>] TSUtil.jar ..."


Folgende Funktionen sind in der aktuellen Version verfuegbar (Nummer der Beschreibung in Klammern):
	- adjh   : Anpassen der Hoehendefinitionen einer Strecke (16)
	- chgdb  : Modifizieren der Schienendatenbank "*.tdb" (6)
	- chkup  : Pruefen zweier globaler 'tsection.dat'-Dateien auf Kompatibilitaet (15)
	- clrdb  : Bereinigen der Resourcendefinitionen einer Strecke (20)
	- cmkr   : Erstellen einer Marker-Datei (4)
	- cmp    : Komprimieren/Reduzieren von Dateien (S,T,W) in das binaer-Format (17)
	- cmpw   : Komprimieren der World-Dateien durch das Programm "Comp" von Martyn Griffin (10)
*	- cvrt   : Konvertieren einer Streckendefinition auf Grund einer neuen "tsection.dat" (5)
	- dcpy   : Selektives Kopieren von Dateien (7)
	- filter : Pruefen und Korrigieren der Geometrie-Definition einer Strecke (9)
*	- ichk   : Integritaetspruefung einer Streckendefinition (12)
	- merge  : Mischen einer Streckendefinition in eine andere (19)
*	- move   : Verschieben einer Streckendefinition (14)
	- rendb  : Neunumerierung der Schienen-/Strassendatenbank (13)
	- shftdyn: Verschieben der dynamischen Definitionen aus der lokalen 'tsection.dat' (22)
	- shift  : Verschieben von Shape/Section-Bereichen in der globalen 'tsection.dat' (8)
*	- tsconv : Umwandeln ALLER Strecken in einer TS-Instanz (11)
	- unc    : Dekomprimieren/Expandieren von Dateien (S,T,W) (18)
	- wcmp   : Komprimieren der World-Dateien in das binaer-Format (2)
	- wcmpo  : Komprimieren der World-Dateien in das binaer-Format (only) (3)
	- wunc   : Dekomprimieren der World-Dateien (1)
	- zusi   : Aufbereiten einer Streckendefinition fuer den Import nach ZUSI (21)

* - Diese Funktionen bilden den Hauptteil des vorliegenden Utilities.


1) Dekomprimieren der World-Dateien
  Mit der Funktion "wunc" kann man veranlassen, dass ALLE World-Dateien in die
  "unkomprimierte Textform" (UT-Form) d.h. in die Form, die man mit dem Editor direkt
  bearbeiten kann, umgewandelt werden.
  Dazu erstellt das Programm intern eine Liste der World-Dateien, prueft in welcher Form
  diese vorliegen und konvertiert sie ggf. durch einen oder mehrere Aufrufe von
  "ffedic_unicode" in die richtige Form.

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] wunc <verz> [<logdat>]
  Hierbei gilt:
	"verz" ist der Dateipfad auf die Streckendefinition, die die World-Dateien enthaelt
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. fuer ProTrain 1: "java TSUtil wunc C:\TRSim\routes\ProTrain_Rheintal C:\Logdat.log"

  Einsatz der erzeugten Daten:
	- Dateien im Verzeichnis 'world' der Strecke mit den Dateien aus dem Verzeichnis
		'newRoute/world' ueberschreiben.

2) Komprimieren der World-Dateien in das binaer-Format
  Mit der Funktion "wcmp" kann man veranlassen, dass ALLE World-Dateien in die
  "komprimierte Binaerform" (KB-Form) d.h. in eine Form, die die Ladezeiten optimiert,
  umgewandelt werden.
  Dazu erstellt das Programm intern eine Liste der World-Dateien, prueft in welcher Form
  diese vorliegen und konvertiert sie ggf. durch einen oder mehrere Aufrufe von
  "ffeditc_unicode" in die richtige Form. Hierzu werden die Dateien ERST in die UT-Form (vgl. 1)
  umgewandelt um danach durch einen zusaetzlichen Aufruf von "ffeditc_unicode" in die KB-Form
  komprimiert zu werden.

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] wcmp <verz> [<logdat>]
  Hierbei gilt:
	"verz" ist der Dateipfad auf die Streckendefinition, die die World-Dateien enthaelt
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. fuer ProTrain 1: "java TSUtil wcmp C:\TRSim\routes\ProTrain_Rheintal C:\Logdat.log"

  Einsatz der erzeugten Daten:
	- Dateien im Verzeichnis 'world' der Strecke mit den Dateien aus dem Verzeichnis
		'newRoute/world' ueberschreiben.

3) Komprimieren der World-Dateien in das binaer-Format (only)
  Mit der Funktion "wcmpo" werden - wie in der vorangehenden Funktion - die World-Dateien
  in die "komprimierte Binaerform" (KB-Form) umgewandelt. Im Gegensatz zur vorangehenden 
  Funktion (vgl. 2) werden jedoch NUR die World-Dateien durch einen Aufruf von
  "ffeditc_unicode" umgewandelt, die in der UT-Form (vgl. 1) vorliegen. ALLE anderen World-
  Dateien werden NICHT veraendert.

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] wcmpo <verz> [<logdat>]
  Hierbei gilt:
	"verz" ist der Dateipfad auf die Streckendefinition, die die World-Dateien enthaelt
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. fuer ProTrain 1: "java TSUtil wcmpo C:\TRSim\routes\ProTrain_Rheintal C:\Logdat.log"

  Einsatz der erzeugten Daten:
	- Dateien im Verzeichnis 'world' der Strecke mit den Dateien aus dem Verzeichnis
		'newRoute/world' ueberschreiben.

4) Erstellen einer Marker-Datei
  Bei Verwendung der Kartenserie "TOP50" ist es moeglich einzelne Koordinaten in eine
  Datei abzuspeichern. Die dort erzeugte Datei erhaelt die Endung ".coo".
  Mit dieser Funktion ist es moeglich, diese Datei in eine Marker-Datei umzuwandeln.

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-k] [-m<id>] cmkr <datei>
  Hierbei gilt:
	"datei" ist der Dateiname mit Pfad und OHNE Endung der Datei, die die
		Koordinatendefinitionen enthaelt
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. : "java TSUtil cmkr C:\koord"
	Hier wird die Datei "C:\koord.coo" in die Markerdatei "C:\koord.mkr" umgewandelt.

  Hinweis: Fuer die Umwandlung wird ausschliesslich Markertyp "2" benutzt.

  Einsatz der erzeugten Daten:
	- Datei ggf. umbenennen und in das Hauptverzeichnis der Strecke verschieben

5) Konvertieren einer Streckendefinition auf Grund einer neuen "tsection.dat"
  Mit dieser Funktion("cvrt") ist es moeglich, eine Streckendefinition an eine Aenderung der
  globalen Datei "tsection.dat" anzupassen. Zusaetzlich kann eine Neu-Numerierung der
  UiD-Kennungen erfolgen.
  Folgende Voraussetzungen sind notwendig, damit diese Funktion korrekt laeuft:
	- Die originale globale "tsection.dat", mit der die betroffene Strecke definiert
		und bearbeitet wurde, muss noch verfuegbar sein.
	- Die neue modifizierte globale "tsection.dat" muss sich im Verzeichnis
		"global" befinden
  Diese Funktion modifiziert sowohl die besiedelten World-Dateien als auch die Schienendatenbank
  und die Strassendatenbank und legt sie als Kopie in einem neuen Verzeichnis ab('\newRoute').
  Die Dateistruktur einer Streckendefinition wird dabei beibehalten und die Unterverzeichnisse
  werden entsprechend erzeugt. Ausserdem wird im gleichen Verzeichnis eine neue "lokale"
  tsection.dat-Datei erzeugt. Damit ist es NICHT notwendig, die Schienendatenbank neu
  aufbauen zu lassen.

  Es gilt jedoch: NUR wenn das Programm KEINE Fehler meldet, die an dem Vorlauf "--->"
  erkennbar sind, ist garantiert, dass alle notwendigen Aenderungen in den neu erzeugten
  Daten auch durchgefuehrt sind. Es ist jedoch moeglich, dass trotz Fehlermeldungen die
  neue Streckendefinition korrekt erzeugt wurde.

  Diese Funktion erkennt auch reine Veraenderungen wie den Austausch von Shape-Definitionen
  und korrigiert automatisch die Referenzen. Um eine Zuordnung (alt-neu) jedoch einwandfrei
  feststellen zu koennen ist es notwendig, dass INNERHALB der Shape-Definitionen keine
  Veraenderung der Reihenfolge der Suboptionen(z.B. SectionIdx) erfolgt ist. Falls eine
  Zuordnung im Einzelfall nicht moeglich ist (z.B. wegen Fehlerkorrektur), kann diese mit
  Hilfe der Option '-v' auch manuell erfolgen. 

  Wenn keine Aenderungen an der globalen "tsection.dat" erfolgt sind, kann die Referenz
  (-b-Option) weggelassen werden. Damit sind nur Aktionen wie Neu-Numerierung der
  UiD-Kennungen und Beseitigung von Luecken in der lokalen tsection.dat aktiv. Eine
  Umnumerierung der dynamischen Track-Definitionen erfolgt nicht mehr.

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] cvrt [-r] [-s] [-c|-u] [-k] [-b<datei>]
		[-v<nr1>:<nr2>]	<verz> [<logdat>]
  Hierbei gilt:
	"verz" ist der Dateipfad auf die Streckendefinition
	"datei" ist der Dateiname (mit Pfad) der ALTEN "tsection.dat" -Datei
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll
	Wenn die Option "-r" spezifiziert wird, wird eine neue Numerierung der
		UiD-Kennungen innerhalb jeder World-Datei veranlasst. Sollte dies auf
		Grund von Fehlern in einzelnen Dateien nicht moeglich sein, so wird eine
		Fehlermeldung ausgegeben und die neue Numerierung unterdrueckt.
	Wenn die Option "-s" spezifiziert wird, wird geprueft, ob alle in der NEUEN
		'tsection.dat' referenzierten Shape-Dateien auch vorhanden sind.
	Wenn die Option "-c" angegeben wird, werden die World-Dateien (*.w) auf jeden Fall in
		der komprimierten Binaer-Version [KB] geschrieben. Normalerweise, werden World-Dateien
		im selben Format geschrieben, wie sie auch gelesen wurden. Diese Option wird durch
		die Angabe von '-u' ggf wieder zurueckgesetzt.
	Wenn die Option "-u" angegeben wird, werden die World-Dateien (*.w) auf jeden Fall in
		der unkomprimierten Text-Version [UT] geschrieben. Normalerweise, werden World-Dateien
		im selben Format geschrieben, wie sie auch gelesen wurden. Diese Option wird durch
		die Angabe von '-c' ggf wieder zurueckgesetzt.
        Die Zuordnung von SHAPE-Definitionen aus der ALTEN zu der NEUEN 'tsection.dat' kann
		auf Grund von Aenderungen in der Definition des Shapes nicht moeglich sein.
		Mit der Option "-v" kann MANUELL eine Zuordnung definiert werden. 'nr1' gibt
		dabei eine Shape-Kennung aus der ALTEN 'tsection.dat' an und 'nr2' beschreibt
		den zugeordneten Shape aus der NEUEN 'tsection.dat'. Die manuelle Zuordnung
		wird NUR dann aktiv, wenn keine andere Zuordnung moeglich war.
		Die Option '-v' kann MEHRFACH angegeben werden.
	Option "-k" schaltet den Korrekturmodus fr World-Dateien ein. Wenn diese Option aktiv ist,
		gelten fuer die Pruefung der Objekt-Definitionen zusaetzlich folgende Regeln:
		+ Doppelte Definitionszeilen bewirken NICHT mehr, dass die gesamte Objekt-Definition
			ungueltig ist. Stattdessen wird eine Meldung erzeugt und die zweite Zeile
			ignoriert.
		+ Fehlende Definitionszeilen werden - falls moeglich - mit Default-Werten hinzugefuegt.
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. fuer ProTrain 1: "java TSUtil cvrt -bC:\tsection.dat C:\TRSim\routes\ProTrain_Rheintal
			 C:\Logdat.log"

  Einsatz der erzeugten Daten:
	- Verzeichnis 'world' der Strecke loeschen und mit dem Verzeichnis 'world' aus 'newRoute'
		ersetzen.
	- Dateien aus dem Verzeichnis 'newRoute' in das Hauptverzeichnis der Strecke verschieben
		und vorhandene Dateien ueberschreiben.

6) Modifizieren der Schienendatenbank ".tdb"
  Mit dieser Funktion ist es moeglich, die Schienendatenbank an eine Aenderung der
  globalen Datei "tsection.dat" anzupassen. Diese Funktion ist dann sinnvoll, wenn
  der Aufbau der Schienendatenbank (gemaess 'Erweiterter Option') nicht funktioniert.
  Eine Anpassung von weiteren Dateien wird NICHT vorgenommen.

  Diese Funktion analysiert die spezifizierte Schienendatenbank, modifiziert alle Referenzen
  auf Shapes und Sections auf Grund der angegebenen neuen Eckwerte und erstellt eine
  Kopie mit der Endung ".tdb$/.rdb$".

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil chgdb <datei> [<shn> <scn> [<sha> <sca>]]
  Hierbei gilt:
	"datei" ist der Dateiname (mit Pfad) der Schienendatenbank (.tdb/.rdb)
        "sha" ist der aktuell benutzte Eckwert fuer Shapes (Default=263)
        "sca" ist der aktuell benutzte Eckwert fuer Sections (Default=376)
        "shn" ist der neu zu benutzende Eckwert fuer Shapes (Default=5000)
        "scn" ist der neu zu benutzende Eckwert fuer Sections (Default=5500)

  z.B. fuer ProTrain 1: "java TSUtil chgdb
	C:\TRSim\routes\ProTrain_Rheintal\ProTrain_Rheintal.tdb 40000 40000"

  HINWEIS: Diese Funktion arbeitet - im Gegensatz zu 5) - auf reiner Satz-Basis. Damit ist
  	es moeglich, dass je nach Angabe der Werte "sha", "sca", "shn" und "scn" die maximale
  	Satzlaenge der Schienendatenbank anwaechst(z.B. Sectionnummer 6-stellig statt 3-stellig).
  	Da die maximal NUTZBARE Satzlaenge der Schienendatenbank nicht bekannt ist, liegt hier
  	ein moeglicher Fehler.

  Einsatz der erzeugten Daten:
	- Datei *.tdb loeschen und Datei *.tdb$ in *.tdb umbenennen. ODER
	- Datei *.rdb loeschen und Datei *.rdb$ in *.rdb umbenennen.

7) Selektives Kopieren von Dateien
  Ein Aufruf der Funktion "dcpy" vergleicht die Dateistruktur basierend auf Verzeichnis 1
  Datei fuer Datei mit der Verzeichnisstruktur basierend auf Verzeichnis 2. Jede
  Datei/Verzeichnis aus der Verzeichnisstruktur 1, die nicht in der Verzeichnisstruktur 2
  vorhanden ist oder ein neueres Datum besitzt, wird an die entsprechende Stelle der
  Verzeichnisstruktur basierend auf Verzeichnis 3 kopiert. Dabei werden eventuell fehlende
  Zwischenverzeichnisse automatisch erstellt.

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] dcpy [-a] [-o] <verz1> <verz2> <verz3> [<logdat>]
  Hierbei gilt:
	"verz1" ist der Dateipfad auf die Basis-Streckendefinition
	"verz2" ist der Dateipfad auf die Vergleichs-Streckendefinition
	"verz3" ist der Dateipfad auf die Ziel-Streckendefinition
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll
	Wenn die Option "-a" spezifiziert wird, werden auch die Dateien mit
		Endung ".bk" beachtet. Im anderen Fall werden diese Dateien weder
		geprueft noch kopiert.
	Die Option '-o' bewirkt, dass Dateien aus der Verzeichnisstruktur 1 NUR dann in die 
		Verzeichhnisstruktur 2 kopiert werden, wenn die Datei sowohl in der Verzeichnis-
		struktur 2 vorhanden ist als auch ein neueres Datum besitzt.
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. fuer ProTrain 1: "java TSUtil dcpy C:\TRSim\routes\ProTrain_Rheintal
			C:\TRSimV\routes\ProTrain_Rheintal 
			C:\TRSimN\routes\ProTrain_Rheintal C:\Logdat.log"

  Einsatz der erzeugten Daten:
	- der Verzeichnisbaum, der bei Verzeichnis <verz3> beginnt erhaelt die kopierten Dateien.

8) Verschieben von Shape/Section-Bereichen in der globalen 'tsection.dat'
  Die Funktion "shift" verschiebt ShapeId- und/oder SectionId-Bereiche in der
  angegebenen GLOBALEN "tsection.dat" und erstellt eine Kopie unter einem neuen Namen, der
  durch Anhaengen von '$' an den alten Namen gebildet wird.
  Dabei werden nur die Id's und die Referenzen auf diese Id's veraendert indem der
  Verschiebungswert addiert wird. Eine neue Sortierung der Eintraege findet NICHT
  statt.
  Um einen Bereich (Shapes ODER Sections) NICHT zu verschieben, wird als Verschiebungswert
  "0" angegeben. Die Werte der Grenzen sind in diesem Fall irrelevant, muessen aber
  korrekt eingegeben werden.
  Der Verschiebungswert kann sowohl positiv als auch negativ sein. Die Bereiche - 
  und das betrifft sowohl Quell- als auch Ziel-Bereich - muessen aber innerhalb der
  definierten Grenzen (0,maxShape/maxSection) liegen.

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] shift <datei>
		<shl> <shh> <shd> <scl> <sch> <scd> [<logdat>]
  Hierbei gilt:
	"datei" ist der Dateiname (mit Pfad) der globalen "tsection.dat"-Datei
	"shl" ist die untere Grenze des ShapeId-Bereiches (inklusive)
	"shh" ist die obere Grenze des ShapeId-Bereiches (exklusive)
	"shd" ist der Verschiebungswert fuer die ShapeId's
	"scl" ist die untere Grenze des SectionId-Bereiches (inklusive)
	"sch" ist die obere Grenze des SectionId-Bereiches (exklusive)
	"scd" ist der Verschiebungswert fuer die SectionId's
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B.: "java TSUtil shift C:\TRSim\Routes\tsection.dat 0 400 2000 0 400 2000 TSUtil.log
  	Hier werden die Definitionen zwischen 0 und 400 an die Stelle 2000 verschoben.

  RESTRIKTION: Damit diese Funktion korrekt laeuft duerfen innerhalb eines KOMMENTARS
  	die Worte "TrackSections", "TrackShapes", TrackSection" und "TrackShape"
  	nicht vorkommen. Ein solcher Kommentar muss aus der globalen "tsection.dat"
  	vorher entfernt werden. Nach der Verschiebung kann er wieder hinzugefuegt werden.

  Einsatz der erzeugten Daten:
	- die Eintraege der Datei 'tsection.dat' (global) so sortieren, dass die Indices aufsteigend
		vorliegen. Dann kann die Datei eingesetzt werden. Eventuell muessen die Strecken
		mit 'cvrt' an die neue Datei angepasst werden.

9) Pruefen und Korrigieren der Geometrie-Definition einer Strecke
  Die Funktion 'filter' prueft die Geometrie-Daten einer Strecke auf Vollstaendigkeit. Jede
  Tile-Definition, die keine Tile-Daten besitzt wird dabei entfernt, d.h die Markierung als
  'besiedelt' wird fuer diesen Tile geloescht. Durch die Option '-w' kann diese Pruefung noch
  verschaerft werden. Wenn diese Option aktiv ist, wird die Markierung als 'besiedelt' auch
  dann zurueckgenommen, wenn ein Tile KEINE World-Datei besitzt.
  Es werden sowohl die Tile- als auch die LO_Tile-Definitionen ueberprueft.

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] filter [-w] <verz> [<logdat>]
  Hierbei gilt:
	"verz" ist der Dateipfad auf die Streckendefinition, die die World-Dateien enthaelt
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll
	Wenn die Option "-w" spezifiziert wird, werden auch die World-Dateien als
		Fehlerkriterium benutzt. Die Markierung einer Tile-Definition, die in diesem
		Fall keine World-Definition besitzt, wird geloescht.
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. fuer ProTrain 1: "java TSUtil filter C:\TRSim\routes\ProTrain_Rheintal C:\Logdat.log"

  Einsatz der erzeugten Daten:
	- Verzeichnis 'TD' der Strecke loeschen und mit dem Verzeichnis 'TD' aus 'newRoute' ersetzen.

10) Komprimieren der World-Dateien durch das Programm "Comp" von Martyn Griffin
  Mit der Funktion "cmpw" werden die World-Dateien in eine komprimierte Form umgewandelt.
  Im Gegensatz zu den oben beschrieben Funktionen wird dazu das Programm "Comp" von
  Martyn Griffin verwendet, das unter dem Namen "recmp119" im Internet verfuegbar ist. Dies
  enthaelt NICHT die Fehler von "ffeditc_unicode". Damit der Aufruf dieses Programms korrekt
  erfolgt, muss es im Unterverzeichnis "utils/comp" der TS-Instanz installiert sein.

  World-Dateien, die in der UB-Form vorliegen werden vor Aufruf des Comp-Programms in die
  UT-Form umgewandelt. Komprimierte Dateien (KB-Form,KT-Form) werden NICHT veraendert.

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] cmpw <verz> [<logdat>]
  Hierbei gilt:
	"verz" ist der Dateipfad auf die Streckendefinition, die die World-Dateien enthaelt
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. fuer ProTrain 1: "java TSUtil cmpw C:\TRSim\routes\ProTrain_Rheintal C:\Logdat.log"

  Einsatz der erzeugten Daten:
	- Dateien im Verzeichnis 'world' der Strecke mit den Dateien aus dem Verzeichnis
		'newRoute/world' ueberschreiben.

11) Umwandeln ALLER Strecken in einer TS-Instanz
  Durch die Funktion "tsconv" werden ALLE Streckendefinitionen einer TS-Instanz an eine neue
  globale "tsection.dat"-Definition angepasst. Die einzelnen Streckendefinitionen werden
  mit der Aenderung ueberschrieben. Es werden dabei fuer jede Streckendefinition der TS-Instanz
  das "Umwandeln der Streckendefinition mit der Funktion 'cvrt'" ausgeloest.

  Die originale "tsection.dat", von der ausgehend ALLE Strecken an die neue Version angepasst
  werden sollen, muss in das Verzeichnis "routes" der TS-Instanz eingestellt werden.
  Falls eine der zu modifizierenden Streckendefinition eine andere "tsection.dat" als
  Ausgangsbasis hat, kann alternativ die fuer diese Streckendefinition zutreffende "tsection.dat"
  unter dem Namen "$tsection.dat" in das Streckenverzeichnis kopiert werden. Diese wird bei
  der Anpassung dann der allgemeinen Definition (in 'routes') vorgezogen.

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] tsconv [-s] [-u] [-v<nr1>:<nr2>] <verz> [<logdat>]
  Hierbei gilt:
	"verz" ist der Dateipfad auf TS-Instanz
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll
	Wenn die Option "-s" spezifiziert wird, wird geprueft, ob alle in der NEUEN
		'tsection.dat' referenzierten Shape-Dateien auch vorhanden sind.
	Die Angabe der Option "-u" bewirkt, dass die World-Dateien immer im UT-Format geschrieben
		werden. Normalerweise werden die Dateien im selben Format wieder geschrieben,
		in dem sie auch gelesen wurden.
        Die Zuordnung von SHAPE-Definitionen aus der ALTEN zu der NEUEN 'tsection.dat' kann
		auf Grund von Aenderungen in der Definition des Shapes nicht moeglich sein.
		Mit der Option "-v" kann MANUELL eine Zuordnung definiert werden. 'nr1' gibt
		dabei eine Shape-Kennung aus der ALTEN 'tsection.dat' an und 'nr2' beschreibt
		den zugeordneten Shape aus der NEUEN 'tsection.dat'. Die manuelle Zuordnung
		wird NUR dann aktiv, wenn keine andere Zuordnung moeglich war.
		Die Option '-v' kann MEHRFACH angegeben werden.
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. : "java TSUtil tsconv C:\TRSim\ C:\Logdat.log"

  Einsatz der erzeugten Daten:
	Es sind KEINE Aktionen notwendig. Die Streckendefinitionen werden DIREKT veraendert.

12) Integritaetspruefung einer Streckendefinition
  Mit der Funktion("ichk") wird die interne Integritaet einer Streckendefinition geprueft.
  Es wird untersucht, ob die globale und lokale 'tsection.dat' - Datei syntaktisch korrekt sind
  und ob die Referenzen zwischen Schienen-/Strassendatenbank und World - Dateien stimmen. Es
  wird auf doppelt vergebene UiD-Kennungen untersucht und ob diese ggf. angepasst werden koennen.
  Es werden KEINE Veraenderungen in der Streckendefinition vorgenommen!

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] ichk [-s] [-k] <verz> [<logdat>]
  Hierbei gilt:
	"verz" ist der Dateipfad auf die Streckendefinition
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll
	Wenn die Option "-s" spezifiziert wird, wird geprueft, ob alle in der
		'tsection.dat' referenzierten Shape-Dateien auch vorhanden sind.
	Option "-k" schaltet den Pruefungsmodus fr World-Dateien um. Wenn diese Option aktiv ist,
		werden die Objekt-Definitionen auf die gleiche Weise geprft, als ob der 
		Korrekturmodus (vergl. Funktion 'cvrt' (5)) aktiv ist.
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. fuer ProTrain 1: "java TSUtil ichk C:\TRSim\routes\ProTrain_Rheintal C:\Logdat.log"

  Einsatz der erzeugten Daten:
	Diese Funktion erzeugt KEINE neuen Dateien! (ausser Log)

13) Neunumerierung der Schienen-/Strassendatenbank
  Nach dem manuellen Loeschen von Track-Nodes aus der Schienen-/Strassendatenbank *.tdb/*.rdb ist
  diese Funktion ("rendb") in der Lage die Verkettungen und Abhaengigkeiten innerhalb der
  Datenbank zu reparieren. Die vorhandenen Nodes werden 'zusammengeschoben' und die Verkettungen
  neu hergestellt. Dabei wird geprueft, ob offene d.h. nicht mehr herstellbare Verkettungen
  existieren. Diese werden im 'Log' protokolliert und durch die Referenz '0' ersetzt.
  Auch die Numerierung im TrItem-Teil der Datenbank wird neu vorgenommen, und damit Luecken
  in den TrItem-Definitionen geschlossen. Auch hier werden die Verkettungen untereinander 
  und zu Track-Nodes aktualisiert. 
  Weiterhin wird eine logische Pruefung der GESAMTEN Datenbank durchgefuehrt. Wenn die Option
  '-o' angegeben wird, ist diese jedoch mit Vorsicht zu behandeln, da die Abhaengigkeiten zu den
  World-Dateien dann nicht geprueft werden. Entsprechende Fehlermeldungen koennen ignoriert werden.

  Diese Funktionen erstellt AUCH die Datenbanken *.tit und *.rit neu. Damit diese Funktion jedoch
  korrekt ausgefuehrt werden kann, muessen in diesen Datenbanken die gleichen Aenderungen
  vorgenommen worden sein(z.B Eintraege geloescht,...), wie in der entsprechenden Datenbank
  des Typs *.tdb/*.rdb. 
 
  ACHTUNG: Bevor die erzeugten Datenbanken eingesetzt werden, sollte man sich ueberzeugen, dass
	es in den World-Dateien KEINE offenen Referenzen auf 'versehentlich' geloeschte
	TrItem-Definitionen gibt. Dazu kann - falls erzeugt - das Protokoll genutzt werden.

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] rendb [-o] [-a] [-w] [-m] <verz> [<logdat>]
  Hierbei gilt:
	"verz" ist der Dateipfad auf die Streckendefinition
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll
	Die Option "-o" wird benutzt, um NUR den TrackDB-Anteil der Datenbank zu reorganisieren.
		Im TrItem-Anteil der Schienen-/Strassendatenbank duerfen in diesem Fall keine
		Veraenderungen oder Loeschungen vorgenommen werden.
	Wenn die LOKALE Option "-w" angegeben wird, werden die Datenbanken auch dann neu erstellt,
		wenn bei der logischen Pruefung Fehler erkannt wurden.
	Wenn die Option "-a" angegeben wird, werden zusaetzlich alle NICHT REFERENZIEREN TrItem-
		Eintraege entfernt. Diese brauchen nicht explizit in den Dateien (*.tdb,*.tit,*.rdb,
		*.rit) geloescht zu werden. Die Option hat keine Wirkung wenn "-o" angegeben ist.
	Die Option '-m' bewirkt die Markierung von fehlerhaften UID-Eintraegen in der Datenbank.
		Wenn die Schienendatenbank mit Hilfe der Option '-w' auch bei fehlerhaften Werten
		neu erstellt wird, werden alle fehlerhaften Werte unveraendert uebernommen.
		Wenn die Option '-m' aktiv ist, werden statt dessen fehlerhafte UID-Werte durch
		'?' ersetzt.
		Diese Option wirkt nur, wenn die Option '-w' auch spezifiziert ist und muss
		NACH dieser Option angegebenen werden.
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. fuer ProTrain 1: "java TSUtil rendb C:\TRSim\routes\ProTrain_Rheintal C:\Logdat.log"

  Einsatz der erzeugten Daten:
	- Dateien aus dem Verzeichnis 'newRoute' in das Hauptverzeichnis der Strecke verschieben
		und vorhandene Dateien ueberschreiben.
	- Wenn Option '-o' NICHT spezifiziert wurde:
	 + Verzeichnis 'world' der Strecke loeschen und mit dem Verzeichnis 'world' aus 'newRoute'
		ersetzen.
	 + Verzeichnis 'Activities' der Strecke loeschen und mit dem Verzeichnis 'Activities' aus
		'newRoute' ersetzen.
	 + Verzeichnis 'Paths' der Strecke loeschen und mit dem Verzeichnis 'Paths' aus 'newRoute'
		ersetzen.
	 + Verzeichnis 'Services' der Strecke loeschen und mit dem Verzeichnis 'Services' aus
		'newRoute' ersetzen.
	 + Verzeichnis 'Traffic' der Strecke loeschen und mit dem Verzeichnis 'Traffic' aus 'newRoute'
		ersetzen.

14) Verschieben einer Streckendefinition
  Diese Funktion ('move') verschiebt eine Streckendefinition um eine bestimmte, angebbare Anzahl
  von Streckenquadraten in X- und/oder Z-Richtung. Alle Definitionen (Tile-Dateien,
  World-Dateien. TD-Definitionen, ...) werden entsprechend angepasst und neu erstellt. Die neuen
  Dateien werden im Verzeichnis '/newRoute' abgelegt, das in der Streckendefinition eingerichtet
  wird.
  Zur genauen Vorgehensweise vergleiche auch das Gesamtbeispiel unten.
  Das Verschieben kann NUR in einer Schrittweite erfolgen, die der groessten Kantenlaenge der
  definierten Tiles in der Strecke entspricht. Wenn LO-Tiles verwendet werden, ist dies meist
  der Wert '8'.

  Waehrend des Verschiebens wird eine Konsolidierung der Quadratstruktur vorgenommen. Alle
  Streckenquadrate, die nicht 'besiedelt' sind, werden nach Moeglichkeit zusammengefasst.
  Neben den Dateien der Streckendefinition, werden auch ALLE Dateien der Activities verschoben
  und angepasst, da auch sie Referenzen auf die Streckendefinition enthalten.
 
  ACHTUNG: Es werden nur DIE Streckenquadrate verschoben, die im Streckengeometrie-Editor als
	'besiedelt' gekennzeichnet sind. Alle anderen Quadrate werden nicht uebernommen. Dies
	betrifft auch die zugeordneten World- und Tile-Dateien. Ggf. ist damit eine Korrektur
	der Strecke im Streckengeometrie-Editor notwendig.

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] move [-c] [-p] <verz> <dx> <dz> [<logdat>]
  Hierbei gilt:
	"verz" ist der Dateipfad auf die Streckendefinition
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll
	"dx" ist die Anzahl der Streckenquadrate, um die die Strecke in X-Richtung verschoben
		werden soll. Der Wert muss ein Vielfaches der groessten Tile-Kantenlaenge sein.
	"dz" ist die Anzahl der Streckenquadrate, um die die Strecke in Z-Richtung verschoben
		werden soll. Der Wert muss ein Vielfaches der groessten Tile-Kantenlaenge sein.
	Wenn die Option "-c" angegeben wird, werden die Tile-Dateien (*.t) auf jeden Fall in der
		reduzierten Version geschrieben. Normalerweise, werden Tile-Dateien im selben
		Format geschrieben, wie sie auch gelesen wurden.
	Die Option "-p" bewirkt, dass neben den Tile-Dateien (*.t) und den Tile-Daten-Dateien
		(*_y.raw, *_f.raw) auch die Pufferdateien (*_e.raw, *_n.raw) unter der
		entsprechenden Namensaenderung kopiert werden. Damit muss der TS diese nicht neu
		erstellen.
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. fuer ProTrain 1: "java TSUtil move C:\TRSim\routes\ProTrain_Rheintal -5120 -496 C:\Logdat.log"

  Einsatz der erzeugten Daten:
	- Verzeichnis 'world' der Strecke loeschen und mit dem Verzeichnis 'world' aus 'newRoute'
		ersetzen.
	- Verzeichnis 'TD' der Strecke loeschen und mit dem Verzeichnis 'TD' aus 'newRoute' ersetzen.
	- Verzeichnis 'Tiles' der Strecke loeschen und mit dem Verzeichnis 'Tiles' aus 'newRoute'
		ersetzen.
	- Verzeichnis 'LO_Tiles' der Strecke loeschen und mit dem Verzeichnis 'LO_Tiles' aus 'newRoute'
		ersetzen.
	- Verzeichnis 'Activities' der Strecke loeschen und mit dem Verzeichnis 'Activities' aus
		'newRoute' ersetzen.
	- Verzeichnis 'Paths' der Strecke loeschen und mit dem Verzeichnis 'Paths' aus 'newRoute'
		ersetzen.
	- Verzeichnis 'Services' der Strecke loeschen und mit dem Verzeichnis 'Services' aus 'newRoute'
		ersetzen.
	- Verzeichnis 'Traffic' der Strecke loeschen und mit dem Verzeichnis 'Traffic' aus 'newRoute'
		ersetzen.
	- Dateien aus dem Verzeichnis 'newRoute' in das Hauptverzeichnis der Strecke verschieben
		und vorhandene Dateien ueberschreiben.

15) Pruefen zweier globaler 'tsection.dat'-Dateien auf Kompatibilitaet
  Mit der Funktion 'chkup' kann man die Kompatibilitaet zwischen zwei Dateien des Typs der 
  globalen 'tsection.dat' ueberpruefen. Eine alte Version ist zu einer neuen kompatibel, wenn alle
  Schienen- und Strassendefinitionen der ALTEN 'tsection.dat' auch in der neuen 'tsection.dat vorhanden
  sind. Dabei koennen sich jedoch die internen Nummern geaendert haben.
  Die alte globale 'tsection.dat' wird spezifiziert, waehrend die neue globale 'tsection.dat' im
  SELBEN Verzeichnis wie die alte Version unter dem Namen 'tsection.dat' existieren muss. Damit ist
  es moeglich, eine reine Syntaxpruefung zu veranlassen, indem man die neue 'tsection.dat-Datei als
  alte Version spezifiziert.

  Diese Funktion erkennt und prueft auch reine Veraenderungen wie den Austausch von Shape-Definitionen.
  Um eine Zuordnung (alt-neu) jedoch einwandfrei feststellen zu koennen ist es notwendig, dass
  INNERHALB der Shape-Definitionen keine Veraenderung der REIHENFOLGE der Suboptionen
  (z.B. SectionIdx) erfolgt ist. Auch muss eine gewisse  allgemeine Reihenfolge eingehalten
  werden, die jedoch normalerweise gegeben ist. (z.B. 'NumPath' vor 'SectionIdx'). Falls eine
  Zuordnung im Einzelfall nicht moeglich ist (z.B. wegen Fehlerkorrektur), kann diese mit Hilfe
  der Option '-v' auch manuell erfolgen. 

  Die Funktion 'chkup' nimmt keinerlei Korrekturen vor.

  Hinweis: Da diese Funktion auch einen Teil der Streckenkonvertierung darstellt, ist die Nutzung
	als Vorstufe zu einer Streckenkonvertierung sinnvoll.

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] chkup [-v<nr1>:<nr2>] <datei> [<logdat>]
  Hierbei gilt:
	"datei" ist der Dateiname (mit Pfad) der ALTEN "tsection.dat" -Datei
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll.
        Die Zuordnung von SHAPE-Definitionen aus der ALTEN zu der NEUEN 'tsection.dat' kann
		auf Grund von Aenderungen in der Definition des Shapes nicht moeglich sein.
		Mit der Option "-v" kann MANUELL eine Zuordnung definiert werden. 'nr1' gibt
		dabei eine Shape-Kennung aus der ALTEN 'tsection.dat' an und 'nr2' beschreibt
		den zugeordneten Shape aus der NEUEN 'tsection.dat'. Die manuelle Zuordnung
		wird NUR dann aktiv, wenn keine andere Zuordnung moeglich war.
		Die Option '-v' kann MEHRFACH angegeben werden.
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. fuer '$tsection.dat': "java TSUtil chkup -v99:99 C:\TRSim\global\$tsection.dat C:\Logdat.log"

  Einsatz der erzeugten Daten:
	Diese Funktion erzeugt KEINE neuen Dateien! (ausser Log)

16) Anpassen der Hoehendefinitionen einer Strecke
  Die Funktion 'adjh' verschiebt eine gesamte Streckendefinition senkrecht, indem sie alle Hoehenwerte
  veraendert. Dazu wird ein fester Betrag, der angegeben wird, auf alle Hoehenwerte innerhalb der
  Strecke addiert. Es sind sowohl die Objekte als auch die Tile-Definitionen betroffen.

  Alle Dateien (*.t,*.w,...) werden im selben Format wieder geschrieben, in dem sie auch gelesen
  wurden. Lediglich die Tile-Dateien koennen mit Hilfe der Option '-c' beim Schreiben automatisch in
  das 'reduzierte Format' konvertiert werden.
  Bemerkung: *-t-Dateien sind NICHT komprimiert. (UB-Format)

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] adjh [-c] <verz> <dh> [<logdat>]
  Hierbei gilt:
	"verz" ist der Dateipfad auf die Streckendefinition
	"dh" bestimmt den Differenzwert, der auf ALLE Hoehenwerte addiert werden soll
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll.
	Wenn die Option "-c" angegeben wird, werden die Tile-Dateien (*.t) auf jeden Fall in der
		reduzierten Version geschrieben. Normalerweise, werden Tile-Dateien im selben
		Format geschrieben, wie sie auch gelesen wurden.
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. fuer ProTrain 1: "java TSUtil adjh C:\TRSim\routes\ProTrain_Rheintal 15.5 C:\Logdat.log"

  Einsatz der erzeugten Daten:
	- Verzeichnis 'world' der Strecke loeschen und mit dem Verzeichnis 'world' aus 'newRoute'
		ersetzen.
	- Verzeichnis 'Tiles' der Strecke loeschen und mit dem Verzeichnis 'Tiles' aus 'newRoute'
		ersetzen.
	- Verzeichnis 'LO_Tiles' der Strecke loeschen und mit dem Verzeichnis 'LO_Tiles' aus 'newRoute'
		ersetzen.
	- Verzeichnis 'Paths' der Strecke loeschen und mit dem Verzeichnis 'Paths' aus 'newRoute'
		ersetzen.
	- Dateien aus dem Verzeichnis 'newRoute' in das Hauptverzeichnis der Strecke verschieben
		und vorhandene Dateien ueberschreiben.

17) Komprimieren/Reduzieren von Dateien (S,T,W) in das binaer-Format
  Mit der Funktion 'cmp' koennen die verschieden Typen von Datendateien (S,T,W) reduziert und
  komprimiert werden. Dazu ist KEIN weiteres Tool erforderlich.
  Standardmssig werden die Dateien nur in das Token-Format (UB) reduziert. Mit einer zusaetzlichen
  Option koennen die Dateien aber auch nach dem ZLib-Verfahren komprimiert werden (CB-Format).
  Dies trifft jedoch NICHT fuer die Tile-Dateien zu, die NUR reduziert werden koennen.

  Mit jedem Aufruf kann nur EIN Dateityp selektiert werden.

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] cmp {-s|-t|-T|-w} [-c] [-x] <verz> [<logdat>]
  Hierbei gilt:
	"verz" ist der Dateipfad auf die Streckendefinition
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll.
	Die Option '-s' selektiert die Shape-Dateien im Unterzeichnis 'Shapes' zur Bearbeitung.
		Alle im Verzeichnis vorhandenen *.s-Dateien werden reduziert, ggf. komprimiert
		und im Verzeichnis 'newRoute/Shapes' abgelegt.
	Die Option '-t' selektiert die Tile-Dateien im Unterzeichnis 'Tiles' zur Bearbeitung.
		Alle im Verzeichnis vorhandenen *.t-Dateien werden reduziert und im Verzeichnis
		'newRoute/Tiles' abgelegt. Die zusaetzliche Option '-c' darf in diesem Fall
		NICHT angegeben werden.
	Die Option '-T' selektiert die Lo-Tile-Dateien im Unterzeichnis 'LO_Tiles' zur Bearbeitung.
		Alle im Verzeichnis vorhandenen *.t-Dateien werden reduziert und im Verzeichnis
		'newRoute/LO_Tiles' abgelegt. Die zusaetzliche Option '-c' darf in diesem Fall
		NICHT angegeben werden.
	Die Option '-w' selektiert die World-Dateien im Unterzeichnis 'World' zur Bearbeitung.
		Alle im Verzeichnis vorhandenen *.w-Dateien werden reduziert, ggf. komprimiert
		und im Verzeichnis 'newRoute/World' abgelegt.
	Wenn die Option "-c" angegeben wird, werden die Dateien nicht nur reduziert ('UB'-Format)
		sondern auch komprimiert ('CB'-Format). Dazu ist KEIN zusaetzlich installiertes
		Tool notwendig.
	Option '-x' bewirkt das Erstellen einer vollstaendigen Kopie des Quell-Verzeichnisses.
		Alle Dateien, die NICHT bearbeitet werden muessen, werden zusaetzlich in das
		Ziel-Verzeichnis kopiert.
		Achtung: Unterverzeichnisse werden NICHT bearbeitet oder kopiert.
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. fuer ProTrain 1: "java TSUtil cmp -w -c C:\TRSim\routes\ProTrain_Rheintal C:\Logdat.log"

  Einsatz der erzeugten Daten:
	- Wenn Option '-x' spezifiziert: Entsprechendes Verzeichnis der Strecke loeschen und mit dem
		gleichnamigen Verzeichnis aus 'newRoute' ersetzen.
	- Sonst: Dateien im entsprechenden Verzeichnis der Strecke mit den Dateien aus dem gleichnamigen
		Verzeichnis in 'newRoute' ueberschreiben.

18) Dekomprimieren/Expandieren von Dateien (S,T,W)
  Mit der Funktion 'unc' koennen die verschieden Typen von Datendateien (S,T,W) dekomprimiert und
  expandiert werden. Dazu ist KEIN weiteres Tool erforderlich.
  Fr jede Datei wird das vorliegende Format ('CB','UB','CT' (siehe oben)) analysiert und die Datei
  in das 'unkomprimierte Textformat' (UT) konvertiert. Liegt das UT-Format bereits vor, wird die
  Datei lediglich kopiert.

  Mit jedem Aufruf kann nur EIN Dateityp selektiert werden.

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] unc {-s|-t|-T|-w} [-x] <verz> [<logdat>]
  Hierbei gilt:
	"verz" ist der Dateipfad auf die Streckendefinition
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll.
	Die Option '-s' selektiert die Shape-Dateien im Unterzeichnis 'Shapes' zur Bearbeitung.
		Alle im Verzeichnis vorhandenen *.s-Dateien werden ggf. dekomprimiert und expandiert
		und im Verzeichnis 'newRoute/Shapes' abgelegt.
	Die Option '-t' selektiert die Tile-Dateien im Unterzeichnis 'Tiles' zur Bearbeitung.
		Alle im Verzeichnis vorhandenen *.t-Dateien werden ggf. expandiert und im Verzeichnis
		'newRoute/Tiles' abgelegt.
	Die Option '-T' selektiert die Lo-Tile-Dateien im Unterzeichnis 'LO_Tiles' zur Bearbeitung.
		Alle im Verzeichnis vorhandenen *.t-Dateien werden ggf. expandiert und im Verzeichnis
		'newRoute/LO_Tiles' abgelegt.
	Die Option '-w' selektiert die World-Dateien im Unterzeichnis 'World' zur Bearbeitung.
		Alle im Verzeichnis vorhandenen *.w-Dateien werden ggf. dekomprimiert und expandiert
		und im Verzeichnis 'newRoute/World' abgelegt.
	Option '-x' bewirkt das Erstellen einer vollstaendigen Kopie des Quell-Verzeichnisses.
		Alle Dateien, die NICHT bearbeitet werden muessen, werden zusaetzlich in das
		Ziel-Verzeichnis kopiert.
		Achtung: Unterverzeichnisse werden NICHT bearbeitet oder kopiert.
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. fuer ProTrain 1: "java TSUtil unc -w C:\TRSim\routes\ProTrain_Rheintal C:\Logdat.log"

  Einsatz der erzeugten Daten:
	- Wenn Option '-x' spezifiziert: Entsprechendes Verzeichnis der Strecke loeschen und mit dem
		gleichnamigen Verzeichnis aus 'newRoute' ersetzen.
	- Sonst: Dateien im entsprechenden Verzeichnis der Strecke mit den Dateien aus dem gleichnamigen
		Verzeichnis in 'newRoute' ueberschreiben.

19) Mischen einer Streckendefinition in eine andere
  Die Funktion 'merge' mischt eine Streckendefinition in eine andere. Dazu sind folgende Voraussetzungen
  zu beachten:
	- Beide Streckendefinitionen duerfen KEINE Tile-Definition gemeinsam haben
		Wenn dennoch eine gemeinsame Tile-Definition existiert, wird der entsprechende Tile
		der einzumischenden Strecke ignoriert und nicht benutzt. Dies KANN zu Inkonsistenzen
		im Bereich der Datenbanken (*.tdb,*.rdb,...) fuehren und entsprechende Fehlermeldungen
		erzeugen.
		Dies betrifft auch LO-Tile-Definitionen!
	- Die Basis fuer dynamische Schienen muss identisch sein und der AKTUELLEN globalen 'tsection.dat'
	   entsprechen.

  Waehrend des Misch-Vorgangs werden auch Signal-Definitionen, Shapes, Texturen, Terrtex-Dateien und
  Sound-Definitionen, die fuer die Gesamtstrecke benoetigt werden und die nicht in der Basisstrecke vorhanden
  sind, uebernommen. Hier ist insbesonders auf Inkonsistenzen zu achten, da in der Basistrecke bereits andere
  Dateien unter gleichem Namen existieren koennen.

  ACHTUNG: Aufgaben, Pfade und Services der einzuzmischenden Strecke werden NICHT uebernommen.
  Hinweis: Es ist sinnvoll, die erzeugte Streckendefinition mit der Funktion 'ichk' auf Integritaet zu
		pruefen. Damit koennen schon vorab eventuelle Probleme erkannt werden. 

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] merge [-p] <verz1> <verz2> [<logdat>]
  Hierbei gilt:
	"verz1" ist der Dateipfad auf die Streckendefinition (Basis)
	"verz2" ist der Dateipfad auf die einzumischende Streckendefinition
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll.
	Die Option "-p" bewirkt, dass neben den Tile-Dateien (*.t) und den Tile-Daten-Dateien
		(*_y.raw, *_f.raw) auch die Pufferdateien (*_e.raw, *_n.raw) kopiert bzw. uebernommen
		werden.	Damit muss der TS diese nicht neu erstellen.
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. fuer ProTrain 1: "java TSUtil merge C:\TRSim\routes\ProTrain_Rheintal
			C:\TRSim\routes\WE8Mod C:\Logdat.log"

  Einsatz der erzeugten Daten:
	- Verzeichnis 'world' der Strecke loeschen und mit dem Verzeichnis 'world' aus 'newRoute'
		ersetzen.
	- Verzeichnis 'TD' der Strecke loeschen und mit dem Verzeichnis 'TD' aus 'newRoute' ersetzen.
	- Verzeichnis 'Tiles' der Strecke loeschen und mit dem Verzeichnis 'Tiles' aus 'newRoute'
		ersetzen.
	- Verzeichnis 'LO_Tiles' der Strecke loeschen und mit dem Verzeichnis 'LO_Tiles' aus 'newRoute'
		ersetzen.
	- Dateien im Verzeichnis 'Shapes' der Strecke mit den Dateien aus dem Verzeichnis
		'newRoute/shapes' ueberschreiben.
	- Dateien im Verzeichnis 'Textures' der Strecke mit den Dateien aus dem Verzeichnis
		'newRoute/textures' (incl. Unterverzeichnisse) ueberschreiben.
	- Dateien im Verzeichnis 'Terrtex' der Strecke mit den Dateien aus dem Verzeichnis
		'newRoute/terrtex' (incl. Unterverzeichnisse) ueberschreiben.
	- Dateien im Verzeichnis 'Sound' der Strecke mit den Dateien aus dem Verzeichnis
		'newRoute/sound' ueberschreiben.
	- Dateien aus dem Verzeichnis 'newRoute' in das Hauptverzeichnis der Strecke verschieben
		und vorhandene Dateien ueberschreiben.

20) Bereinigen der Resourcendefinitionen einer Strecke
  Die Funktion 'clrdb' analysiert die Schienen- und Strassendatenbank und entfernt alle nicht mehr
  genutzen Definitionsketten (TrEndNode - TrVectorNode/TrJunctionNode - TrEndNode). Eine Definitions-
  kette ist dann nicht mehr genutzt, wenn es KEIN gueltiges World-Objekt mehr gibt, das auf diese
  Kette verweist. Dabei ist es unerheblich, WIESO keine Referenz mehr existiert. Durch das Loeschen
  der Markierung eines Tiles als auch durch Loeschen eines Objektes in einer World-Datei, kann dies
  erfolgen.
  Zusaetzlich werden auch ALLE TrItem-Definitionen, die nicht mehr benutzt werden, aus den Datenbanken
  entfernt.
  Alle weiterhin benutzten World-/Sound-Dateien werden im Zielverzeichnis abgelegt. Damit ist es
  moeglich, nicht mehr benoetigte Dateien auszufiltern. 

  Weiterhin werden auch alle Activity-Definitionen untersucht, ob sie auf einen ungueltigen Eintrag
  verweisen. Alle dann noch gueltigen Activity-, Path-, Service- und Traffic-Dateien werden in das
  entsprechende Zielverzeichnis kopiert. Es werden dabei auch Abhaengigkeiten untereinander berueck-
  sichtigt. Eine Activity ist nur dann gueltig, wenn ALLE abhaengigen Komponenten (Pfade,...) auch
  verwendet werden.

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] clrdb [-t] [-p] [-w] <verz> [<logdat>]
  Hierbei gilt:
	"verz" ist der Dateipfad auf die Streckendefinition
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll.
	Mit der Option "-t" werden alle aktiven d.h. besiedelten Tile-Dateien (*.t) und deren Daten-
		Dateien in das entsprechende Zielverzeichnis ('newRoute/Tiles','newRoute/LO_Tiles')
		kopiert. Damit ist es moeglich eine Konsolidierung der fuer die Route benoetigten
		Dateien durchzufuehren.
	Die Option "-p" bewirkt, dass neben den Tile-Dateien (*.t) und den Tile-Daten-Dateien
		(*_y.raw, *_f.raw) auch die Pufferdateien (*_e.raw, *_n.raw) kopiert bzw. uebernommen
		werden.	Damit muss der TS diese nicht neu erstellen. Diese Option hat NUR Wirkung
		wenn auch '-t' spezifiziert wird.
	Um fehlende World-Dateien generieren zu lassen wird die Option '-w' verwendet. Wenn diese ange-
		geben wird, generiert TSUtil fuer jeden Quadranten einer Tile-Definition, der keine
		World-Datei hat, eine LEERE 'Dummy-World-Datei' ohne Eintraege.
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. fuer ProTrain 1: "java TSUtil clrdb C:\TRSim\routes\ProTrain_Rheintal C:\Logdat.log"

  Einsatz der erzeugten Daten:
	- Verzeichnis 'world' der Strecke loeschen und mit dem Verzeichnis 'world' aus 'newRoute'
		ersetzen.
	- Verzeichnis 'Activities' der Strecke loeschen und mit dem Verzeichnis 'Activities' aus
		'newRoute' ersetzen.
	- Verzeichnis 'Paths' der Strecke loeschen und mit dem Verzeichnis 'Paths' aus 'newRoute'
		ersetzen.
	- Verzeichnis 'Services' der Strecke loeschen und mit dem Verzeichnis 'Services' aus 'newRoute'
		ersetzen.
	- Verzeichnis 'Traffic' der Strecke loeschen und mit dem Verzeichnis 'Traffic' aus 'newRoute'
		ersetzen.
	- Dateien aus dem Verzeichnis 'newRoute' in das Hauptverzeichnis der Strecke verschieben
		und vorhandene Dateien ueberschreiben.
	- Wenn Option '-t' spezifiziert: Verzeichnis 'Tiles' der Strecke loeschen und mit dem
		Verzeichnis 'Tiles' aus 'newRoute' ersetzen.
	- Wenn Option '-t' spezifiziert: Verzeichnis 'LO_Tiles' der Strecke loeschen und mit dem
		Verzeichnis 'LO_Tiles' aus 'newRoute' ersetzen.

21) Aufbereiten einer Streckendefinition fuer den Import nach ZUSI
  Diese Funktion ist z. Zt. in Entwicklung

22) Verschieben der dynamischen Definitionen aus der lokalen 'tsection.dat'
  Diese Funktion("shftdyn") verschiebt den Bereich der dynamischen Definitionen an die korrekte Position.
  Diese Position wird durch die aktuelle globale 'tsection.dat' vorgegeben. Es werden sowohl die
  besiedelten World-Dateien als auch die Schienendatenbank und die Strassendatenbank modifiziert und als
  Kopie in einem neuen Verzeichnis ('\newRoute') abgelegt. Die Dateistruktur einer Streckendefinition wird
  dabei beibehalten und die Unterverzeichnisse werden entsprechend erzeugt. Ausserdem wird im gleichen
  Verzeichnis eine neue "lokale" tsection.dat-Datei erzeugt. Damit ist es NICHT notwendig, die
  Schienendatenbank neu aufbauen zu lassen.

  Die Position des zu verschiebenden dynamischen Bereiches, wird duch die Argumente 'sha' (fuer Shapes)
  und 'sca' (fuer Sections) angegeben. Dieser Wert muss mit den Start-Indizes in der aktuellen lokalen
  'tsection.dat' uebereinstimmen. Die Laenge des Bereiches wird ebenfalls durch diese Datei vorgegeben.
  Dieser Bereich kann sich - im Gegensatz zur Funktion 'cvrt' - mit der aktuellen globalen 'tsection.dat'
  ueberlappen. 

  Um die im Aufruf spezifizierten Werte eindeutig zuordnen zu knnen, ist eine genaue Abfolge der Werte
  einzuhalten. Desshalb muss ggf. ein Platzhalter '+' angegeben werden. In diese Reihenfolge ist auch
  die Angabe der LOG-Datei involviert.

  ACHTUNG: Obwohl die '-w'-Option aktiv ist, kann es vorkommen, dass einzelne 'DynTrack'-Objekte NICHT
		erzeugt werden. Auf Grund von fehlenden Informationen oder Fehlern in der Schienendatenbank
		kann es nicht sichergestellt werden, dass ALLE fehlenden Objekte auch generiert werden.

  Der Aufruf sieht folgendermassen aus:
	C>java TSUtil [-l] [-k] [-m<id>] [{-e|-w}] shftdyn [-c|-u] [-w] <verz> [{<sha>|+} [{<sca>|+} [<logdat>]]]
  Hierbei gilt:
	"verz" ist der Dateipfad auf die Streckendefinition
	"sha" ist der ID-Wert an dem der dynamische Bereich der Pfade beginnt. Wenn dieser Wert nicht
		angegeben ist, wird ein Default von '263' angenommen. Dieser Defaultwert wird auch
		dann benutzt, wenn der Platzhalter '+' angeben wird. Dieser ist ggf. notwendig, wenn
		weitere Werte folgen.
	"sca" ist der ID-Wert an dem der dynamische Bereich der Sections beginnt. Wenn dieser Wert nicht
		angegeben ist, wird ein Default von '376' angenommen. Dieser Defaultwert wird auch
		dann benutzt, wenn der Platzhalter '+' angeben wird. Dieser ist ggf. notwendig, wenn
		weitere Werte folgen.
	"logdat" ist der (optionale) Name der LOG-Datei, der die Verlaufsmeldungen
		und Fehler aufnehmen soll
	Die Option "-w" bewirkt, dass fehlende dynamische Definitionen generiert und hinzugefuegt werden.
		Wenn diese aktiv ist, wird versucht aus den Informationen der Schienendatenbank das
		fehlende World-Objekt zu generieren. Damit koennen auch Pfade an die korrekte Position
		verschoben zu denen - auf Grund eines Fehlers - kein DynTrack-Objekt existiert.
		Das erzeugte World-Objekt sollte NACH Aufruf dieser Funktion nochmals mit dem
		Streckeneditor bearbeitet werden, um alle 'berechneten' Werte ggf. nochmals zu korrigieren. 
	Wenn die Option "-c" angegeben wird, werden die World-Dateien (*.w) auf jeden Fall in
		der komprimierten Binaer-Version [KB] geschrieben. Normalerweise, werden World-Dateien
		im selben Format geschrieben, wie sie auch gelesen wurden. Diese Option wird durch
		die Angabe von '-u' ggf wieder zurueckgesetzt.
	Wenn die Option "-u" angegeben wird, werden die World-Dateien (*.w) auf jeden Fall in
		der unkomprimierten Text-Version [UT] geschrieben. Normalerweise, werden World-Dateien
		im selben Format geschrieben, wie sie auch gelesen wurden. Diese Option wird durch
		die Angabe von '-c' ggf wieder zurueckgesetzt.
	Bezueglich der globalen Optionen vergleiche 'Einleitung'

  z.B. fuer ProTrain 1: "java TSUtil shftdyn C:\TRSim\routes\ProTrain_Rheintal + + C:\Logdat.log"

  Einsatz der erzeugten Daten:
	- Verzeichnis 'world' der Strecke loeschen und mit dem Verzeichnis 'world' aus 'newRoute'
		ersetzen.
	- Dateien aus dem Verzeichnis 'newRoute' in das Hauptverzeichnis der Strecke verschieben
		und vorhandene Dateien ueberschreiben.






FIKTIVES GESAMTBEISPIEL (Funktion 'cvrt'):
Im folgenden Beispiel soll angenommen werden, dass im Verzeichnis "C:\TrSim" der
Trainsimulator installiert ist. Dort gibt es auch die Strecke "Usa3", die fuer Erweiter-
ungszwecke an eine neue 'tsection.dat' angepasst werden soll. Die z.Zt. noch gueltige
'tsection.dat' befindet sich im Verzeichnis "C:\TrSim\global". Die neue 'tsection.dat'
ist im Verzeichnis "C:\TrSim\neu" verfuegbar.

Im folgenden soll weiter angenommen werden, dass die Ausfuehrung der Befehle keine Fehler
erzeugt. Ausserdem ist die Pruefung der LOG-Datei nicht explizit aufgefuehrt.

a) Datensicherung erstellen

b) DOS-Fenster oeffnen (Eingabeaufforderung)
	Annahme: Das Fenster oeffnet sich auf das Verzeichnis "C:\"

c) Alle World-Dateien dekomprimieren/expandieren (Aktion NICHT mehr notwendig)

d) Kopieren und sichern der aktuellen 'tsection.dat'
	C>md C:\TrSim\alt
	C>copy C:\TrSim\global\tsection.dat C:\TrSim\alt

e) Aktivieren der neuen 'tsection.dat' (bitte ueberschreiben)
	C>copy C:\TrSim\neu\tsection.dat C:\TrSim\global

f) Loeschen des Ziel-Verzeichnisses, wenn vorhanden
	C>deltree C:\TrSim\Routes\Usa3\newRoute

g) Konvertieren der Streckendefinition
	C>java TSUtil cvrt -bC:/TrSim/alt/tsection.dat C:/TrSim/Routes/Usa3 TSUtil.log

h) Loeschen der Original-Dateien aus der Streckendefinition
	C>deltree C:\TrSim\Routes\Usa3\world

i) Aktivieren der neu erzeugten Dateien (bitte ueberschreiben)
	C>xcopy C:\TrSim\Routes\Usa3\newRoute\*.* C:\TrSim\Routes\Usa3 /s

j) Alle World-Dateien wieder komprimieren/reduzieren (optional, auch mit 'Route-Riter')
        (nicht notwendig wenn die Dateien in der komprimierten Form vorlagen.)
	C>java TSUtil wcmpo C:/TrSim/Routes/Usa3 TSUtil.log

k) ggf. erzeugte Dateien loeschen
	C>deltree C:\TrSim\Routes\Usa3\newRoute

l) ggf. Fenster wieder schliessen
	C>exit


FIKTIVES GESAMTBEISPIEL (Funktion 'move'):
Im folgenden Beispiel soll angenommen werden, dass im Verzeichnis "C:\TrSim" der
Trainsimulator installiert ist. Dort gibt es auch die Strecke "Usa3", die nach Europa
verschoben werden soll. Dazu soll diese um 5120 Quadrate in X-Richtung bewegt werden.
Die Z-Position soll beibehalten werden.

Im folgenden soll weiter angenommen werden, dass die Ausfuehrung der Befehle keine Fehler
erzeugt. Ausserdem ist die Pruefung der LOG-Datei nicht explizit aufgefuehrt.

a) DATENSICHERUNG ERSTELLEN

b) Tile-Dateien expandieren
	Mit Hilfe von 'Route-Riter' die *.t-Dateien in den Verzeichnissen
	'C:/TrSim/Routes/Usa3/Tiles' und 'C:/TrSim/Routes/Usa3/LO_Tiles' dekomprimieren.

c) Alle World-Dateien dekomprimieren/expandieren (Aktion NICHT mehr notwendig)

d) DOS-Fenster oeffnen (Eingabeaufforderung)
	Annahme: Das Fenster oeffnet sich auf das Verzeichnis "C:\"

e) Loeschen des Ziel-Verzeichnisses, wenn vorhanden
	C>deltree C:\TrSim\Routes\Usa3\newRoute

f) Verschieben der Streckendefinition
	C>java TSUtil move C:/TrSim/Routes/Usa3 5120 0 TSUtil.log

g) Loeschen der Original-Dateien aus der Streckendefinition
	C>deltree C:\TrSim\Routes\Usa3\TD
	C>deltree C:\TrSim\Routes\Usa3\world
	C>deltree C:\TrSim\Routes\Usa3\Tiles
	C>deltree C:\TrSim\Routes\Usa3\LO_Tiles		(ggf.)
	C>deltree C:\TrSim\Routes\Usa3\Activities
	C>deltree C:\TrSim\Routes\Usa3\Paths
	C>deltree C:\TrSim\Routes\Usa3\Services
	C>deltree C:\TrSim\Routes\Usa3\Traffic

h) Aktivieren der neu erzeugten Dateien (bitte ueberschreiben)
	C>xcopy C:\TrSim\Routes\Usa3\newRoute\*.* C:\TrSim\Routes\Usa3 /s

i) Tile-Dateien wieder reduzieren
        (nicht notwendig wenn in Step f) die Option '-c' benutzt wurde oder die Dateien
	  in der reduzierten Form vorlagen.)
	Mit Hilfe von 'Route-Riter' die *.t-Dateien in den Verzeichnissen
	'C:/TrSim/Routes/Usa3/Tiles' und 'C:/TrSim/Routes/Usa3/LO_Tiles' reduzieren.

j) Alle World-Dateien wieder komprimieren/reduzieren (optional, auch mit 'Route-Riter')
	C>java TSUtil wcmpo C:/TrSim/Routes/Usa3 TSUtil.log

k) ggf. erzeugte Dateien loeschen
	C>deltree C:\TrSim\Routes\Usa3\newRoute

l) ggf. Fenster wieder schliessen
	C>exit


HISTORIE:
30.07.2003 - V2.0 Freigabe zur Nutzung
01.08.2003 - V2.0 Erweiterte Plausibilitaetenpruefung
05.08.2003 - V2.0 kleinere Fehlerkorrekturen und Optimierungen (Logging)
17.08.2003 - V2.1 Aufnahme der Funktion 'shift'
25.08.2003 - V2.1 Unterstuetzung von mehreren identischen Section-Definitionen
05.09.2003 - V2.1 Korrekturen von groesseren Fehlern (gross/klein-Schreibung)
22.09.2003 - V2.2 Aufnahme weiter Optionen sowie der Funktion 'cmpw'
30.10.2003 - V2.3 Neue Funktion 'tsconv'
19.01.2004 - V2.3 Leerzeichen in Routennamen, Fehlerbeseitigung
21.01.2004 - V2.3 zusaetzliche Optionen, Optimierungen
23.01.2004 - V2.4 Neue Funktion 'ichk'
00.00.0000 - V2.5 Neue Funktion 'rendb'
16.02.2004 - V2.6 Redesign der Ausfuehrungsstruktur (lesen - pruefen - (schreiben))
07.04.2004 - V3.0 neues, vollstaendig verkettetes Datenspeichermodell, Tile-Definitionen pruefen
		    Quadratstruktur pruefen, Neue Funktion 'move', Neue Funktion 'chkup'
13.04.2004 - V3.0 Fehlerkorrektur, genauere Versionskennung
11.05.2004 - V3.0 zusaetzliche Argumente (cvrt,...), intern: lokale 'tsection.dat' umgestellt
18.05.2004 - V3.0 Fehlerkorrekturen und Optimierungen
21.05.2004 - V3.0 Umbau der Funktion 'rendb' mit Fehlerkorrektur
27.05.2004 - V3.0 Neue Funktion 'adjh' (nicht zum Download)
01.07.2004 - V3.0 Fehlerkorrekturen und erweiterte Pruefung bei Funktion 'ichk'
15.07.2004 - V3.0 Erste, noch nicht vollstaendig uebersetzte, englische Version
09.08.2004 - V3.0 Fehlerkorrekturen, Zweite englische Version (nicht vollstaendig uebersetzt)
12.08.2004 - V3.0 Fehlerkorrekturen, Dritte englische Version (Uebersetzung nahezu beendet)
19.08.2004 - V3.0 Fehlerkorrekturen, Vollstaendig uebersetzte englische Version
13.09.2004 - V3.0 Fehlerkorrekturen, Unterstuetzung mehrerer Signal-Script-Dateien
31.10.2004 - V3.0 Fehlerkorrekturen, Erweiterte Pruefung der lokalen 'tsection.dat'
15.11.2004 - V3.0 Fehlerkorrekturen, (nicht zum Download)
20.11.2004 - V3.0 Neue Funktion 'cmp', Neue Funktion 'unc', Kleinere Fehlerkorrekturen,
		    Neue globale Option, Dokumentationskorrektur
26.11.2004 - V3.0 Neue Funktion 'filt', verbesserte Fehlermeldungen
05.12.2004 - V3.0 Funktion 'filt'->'filter', Fehlerkorrekturen, 'ichk' prueft Activities
07.12.2004 - V3.0 Fehlerkorrekturen
28.12.2004 - V3.0 Fehlerkorrekturen, Umbau von Funktionen auf neue Dateischnittstelle
		    (Version NICHT zum Download verfuegbar)
16.01.2005 - V3.1 Fehlerkorrekturen, neue Funktion 'merge', Ueberarbeitung der
		    Dateischnittstellen
27.01.2005 - V3.1 Fehlerkorrekturen
06.02.2005 - V3.2 Fehlerkorrekturen, Unterstuetzung von Tiles>1, neue Funktion 'clrdb'
		    Erweiterte Dokumentation
10.02.2005 - V3.2 Fehlerkorrekturen
12.02.2005 - V3.2 Fehlerkorrekturen
17.02.2005 - V3.2 Fehlerkorrekturen
22.02.2005 - V3.2 Fehlerkorrekturen, erweiterte Pruefung bei lokalen Optionen
22.03.2005 - V3.2 Fehlerkorrekturen, erweiterte 'Merge'-Funktion(Signal)
31.03.2005 - V3.2 Fehlerkorrekturen
29.04.2005 - V3.2 Fehlerkorrekturen
27.05.2005 - V3.2 Fehlerkorrekturen, Korrekturmodus fuer World-Dateien
22.06.2005 - V3.2 Fehlerkorrekturen, Optimierungen innerhalb der Klassendefinitionen
28.07.2005 - V3.2 Fehlerkorrekturen, neue Funktion 'shftdyn', Optimierungen
26.08.2005 - V3.2 Fehlerkorrekturen, Erweiterung der Funktion 'shftdyn'



ACHTUNG:

- Diese Software wurde auf meinem eigenen PC erstellt und getestet.
	Fuer eventuelle Schaeden an Hard- und Software uebernehme ich keine Verantwortung.
- Dieses Programm wird staendig weiterentwickelt. Dazu gehoert auch die Beseitigung von Fehlern,
	die im allgemeinen nicht vermeidbar sind. Die aktuellste Version ist wie folgt verfuegbar:
	'carloshr.privat.t-online.de'   oder (alias) 'www.carloshr.homepage.t-online.de'

Credits:

Ein herzlicher Dank geht an 'Don Quichotte' fuer das unermuetliche Testen von neuen Versionen. Weiterhin 
  bedanke ich mich fuer die Anregungen, die er zum Ausbau und zur Verbesserung von neuen Funktionen
  geliefert hat.
Ebenso danke ich Mike Simpson fuer die Integration dieser Sofware in Route-Riter und das damit verbundene
  'praktische' Testen der einzelnen Funktionen.


CopyRight:
----------

Dieses Utility ist Freeware und darf beliebig kopiert und verbreitet werden, solange 
der Inhalt der ZIP-Datei weder veraendert noch erweitert wird. 
Alle sonstigen Aenderungen beduerfen der Einwilligung des Autors.
Wenn die Software zur Erstellung, Modifikation oder Prfung von kommerziellen Routen fuer den TrainSimulator
eingesetzt wird, ist die Verwendung in der Beschreibung oder Nutzungsvereinbahrung dieser Route aufzufhren.
Andernfalls ist die Benutzung von TSUtil NICHT gestattet.

Kontakt:
	carlosHR@t-online.de


======================================================================================================================

Anhang: Eigenschaften des Korrektur-Modus

ACHTUNG: Diese Beschreibung ist in erster Linie fuer Experten gedacht, die in die Tiefen von TSUtil einsteigen
	moechten und ausserdem etwas von Datenverarbeitung verstehen.

Mit der Aktivierung des Korrekturmodus werden fuer die Objekt-Definitionen der World-Dateien fuer jede fehlende
Definitionszeile eine Default-Definition hinzugefuegt. Dies Definition folgt entweder einem festen Schema oder
der Wert ist in der Property-Datei (ErrMsg???.properties) festgelegt.
Im einzelnen sind folgende Defaultwerte hinzufuegbar:

Objekttyp   !	Schluesselwort    !	Y   !	Schluessel  !	Wert
------------------------------------------------------------------------------------------------------------ 
TrackObj	Elevation		3	TSUidX03	-
TrackObj	VDbId			25	-		fester Wert '4294967294'
TrackObj	StaticDetailLevel	26	-		aktueller Level wird verwendet
DynTrack	Elevation		3	TSUidX13	-
DynTrack	VDbId			25	-		fester Wert '4294967295'
DynTrack	StaticDetailLevel	26	-		aktueller Level wird verwendet
Signal		VDbId			25	-		fester Wert '4294967295'
Signal		StaticDetailLevel	26	-		aktueller Level wird verwendet
Static		StaticDetailLevel	26	-		aktueller Level wird verwendet
Forest		ScaleRange		2	TSUidX42	-
Forest		Area			3	TSUidX43	-
Forest		Population		4	TSUidX44	-
Forest		TreeSize		5	TSUidX45	-
Forest		VDbId			25	-		fester Wert '4294967295'
Forest		StaticDetailLevel	26	-		aktueller Level wird verwendet
Platform	VDbId			25	-		fester Wert '4294967295'
Siding		VDbId			25	-		fester Wert '4294967295'
Gantry		VDbId			25	-		fester Wert '4294967295'
Speedpost	Speed_Text_Size		3	TSUidX83	-
Speedpost	VDbId			25	-		fester Wert '4294967295'
CarSpawner	CarFrequency		1	TSUidX91	-
CarSpawner	CarAvSpeed		2	TSUidX92	-
CarSpawner	VDbId			25	-		fester Wert '4294967295'
LevelCr 	Crashprobability	2	TSUidXA2	-
LevelCr 	LevelCrTiming		4	TSUidXA4	-
LevelCr		VDbId			25	-		fester Wert '4294967295'
Hazard		VDbId			25	-		fester Wert '4294967295'
Transfer	VDbId			25	-		fester Wert '4294967295'
Transfer	StaticDetailLevel	26	-		aktueller Level wird verwendet
CollideObject	VDbId			25	-		fester Wert '4294967295'
Telepole	VDbId			25	-		fester Wert '4294967295'
Pickup		VDbId			25	-		fester Wert '4294967295'

(Bemerkung: Der Wert Y verweist auf die Bitnummer in der Y-Maske (vgl. unten))

Wenn in der o.a. Tabelle ein Schluessel der Properties-Datei aufgefuehrt ist, wird der Defaultwert aus dieser
Datei entnommen, mit zusaetzlichen Leerzeichen eingefasst und als Argument der Definitionszeile verwendet.
Standardmaessig werden hinter den Schluesseln 'feste Werte' hinterlegt. Ein Nutzer kann die Properties-Datei
jedoch auch modifizieren und andere Werte verwenden. Dabei gibt es folgende Moeglichkeiten den Wert dynamisch
d.h. beim Einsetzen in die Ausgabe, zu modifizieren:
- Kennung '%0' wird durch den 'aktuellen Filenamen' (oder "" falls nicht vorhanden) ersetzt
- Kennung '%1' wird durch aktuellen UiD-Wert ersetzt
- Kennung '%2' wird durch den Y-Wert (vgl. Tabelle) ersetzt


Ob eine Default-Definition hinzugefuegt wird, kann mit Hilfe der 'Online-Konfiguration' nochmals veraendert
werden. Die Online-Konfiguration benutzt dazu die verborgenen globale Option '$D' um diese Korrekturen zu
steuern.
Diese globale Option sieht wie folgt aus:
	-$Dxxxx:yyyyyyyy	(Achtung: 'D', nicht 'd')
Sowohl 'xxxx' als 'yyyyyyyy' sind hierbei eine hexadezimale Maske, die genau aus 4 bzw. 8 Hex-Ziffern besteht.
Alle Bits dieser Masken sind von rechts nach links , mit '0' beginnend numeriert. Damit besteht die X-Maske aus
16 (0..15) und die Y-Maske aus 32 (0..31) Bits.

Die Bits der X-Maske sind wie folgt den verschiedenen Objekt-Typen zugeordnet:
 0 - TrackObj
 1 - DynTrack
 2 - Signal
 3 - Static
 4 - Forest
 5 - Platform
 6 - Siding
 7 - Gantry
 8 - Speedpost
 9 - CarSpawner
10 - LevelCr
11 - Hazard
12 - Transfer
13 - CollideObject
14 - Telepole
15 - Pickup

Soll nun die folgende Y-Maske auf einen Objekt-Typ angewendet werden, so ist das entsprechende Bit in der X-Maske
zu setzen. 'FFFF' wendet damit die Y-Maske auf alle moeglichen Objekt-Typen an, waehrend mit '0000' die Option
KEINE Wirkung hat.

Die Zuordnungen der Bits der Y-Maske sind wie folgt vergeben:
0..15 - vom Objekt-Typ abhangig.
16 - TrItemId
17 - CollideFlags
18 - Collidefunction
19 - FileName
20 - StaticFlags
21 - Position
22 - QDirection
23 - Matrix3x3
24 - MaxVisDistance
25 - VDbId
26 - StaticdetailLevel
27 - SignalSubObj
28 - SignalUnits
29 - NoDirLight
30 -
31 -

Diese Zuordnungen sind auch in der o.a. Tabelle ersichtlich (Y-Bit)
Die Y-Maske gibt nun an, fr welche Definitionszeile KEIN Defaultwert erzeugt werden soll. Dazu ist das
entsprechende Bit ZURUECKZUSETZEN. Alle nicht benutzten Bits muessen deshalb mit '1' vorbesetzt werden.

Beispiele:
 -$DFFFF:FBFFFFFF - Defaultwerte fuer 'StaticdetailLevel' werden bei ALLEN Objekttypen NICHT erzeugt.
 -$D0001:F9FFFFFF - Defaultwerte fuer 'StaticdetailLevel' und 'VDbId' werden bei TrackObj-Def. NICHT erzeugt.
 -$DFFFF:00000000 - Es werden KEINE Defaultwerte erzeugt.
			(Alle anderen Eigenschaften der Korrekturmodus bleiben aktiv.)
