Die Kommandozeile wird selbstständig
Einführung in Tcl/Tk, Teil 2
Wir hätten da noch…
Und schon geht es weiter mit dem Povray-Aufruf. Wie oben schon erwähnt, benötigt dieser sowohl den Namen einer Eingabedatei, als auch den einer von ihm zu erzeugenden Bilddatei. Der Name der Bilddatei unterscheidet sich von dem der Eingabedatei lediglich durch die Dateiendung: Die Szenenbeschreibungsdatei endet auf .pov, die Bilddatei mit .tga. Es ist also ganz nützlich, sich von Tcl die Endung .pov durch .tga ersetzen zu lassen.
Da hilft der Befehl file weiter. Mit dem Argument rootname schneidet file die Dateiendung des angegebenen Dateinamens weg. Probieren Sie es doch wieder im tclsh-Interpreter aus:
% % # Abschneiden der Dateiendung % file rootname bild.pov bild %
Um das Ergebnis des Befehls weiter zu verwenden und in einer Variablen zu speichern, müssen Sie ihn in eckige Klammern schreiben. Tcl wertet zunächst den eingeklammerten Befehl aus, ersetzt die Klammern und den Befehl durch das Befehlsergebnis und weist dieses der Variablen zu.
% # Deklaration der Variablen testname % set testname [ file rootname bild.pov ] bild %
Nachdem Sie den "Rumpf" des Dateinamens in der Variablen testname gespeichert haben, können Sie ihn um die gewünschte Dateiendung erweitern. Dazu hängen Sie die Endung einfach an den Variableninhalt an und speichern das Ergebnis wieder unter dem selben Variablennamen.
% % # Ergänzen von testname durch eine neue Endung % set testname $testname.tga bild.tga %
Der zusätzliche Code für Ihre Programmdatei lautet somit:
set bildname [ file rootname $dateiname ] set bildname $bildname.tga
Wenn das Wörtchen "wenn" nicht wär'…
Mit dem vierten Punkt auf der Liste wollen Sie den Nutzer fragen, ob er die Bildgröße einstellen möchte. Das sollte jetzt kein Problem mehr sein, auch nicht, die Eingaben des Nutzers in einer neuen Variablen zu speichern. Von da an müssen Sie Ihren Programmablauf abhängig von der Eingabe des Nutzers gestalten.
In normalem Deutsch gesprochen hört sich das so an:
- Wenn der Nutzer die Bildgröße eingeben möchte,
- wird er aufgefordert, die Bildgröße einzugeben,
- die Bildgröße wird gespeichert
- und das Programm povray mit den Größenangaben aufgerufen.
- Ansonsten wird povray ohne Maßangaben aufgerufen.
Deutsch nach Tcl übersetzt macht aus Wenn ein if. Die Kontrollstruktur if stellt eine Ja-Nein-Frage. Ist die Antwort darauf ein Ja, so wird eine Folge von Aktionen – ein kleines Skript – ausgeführt, sonst nicht. Die erste Klammer enthält die Abfrage, die zweite das Skript. Im Interpreter sieht das so aus:
%
% # Ein if, dessen Skript ausgeführt wird
% if { 1 < 2 } { puts "Stimmt" }
Stimmt
%
% # Ein if, dessen Skript nicht ausgeführt wird
% if { 1 > 2 } { puts "Stimmt" }
%Wenn Sie ein Entweder-Oder programmieren möchten, können Sie das mit einer if-else-Konstruktion. Das else stellt eine mögliche Option für if dar, deren Skript ausgeführt wird, wenn die Abfrage mit Nein beantwortet wird.
%
% # Entweder-oder:
% # Ja, 1 ist kleiner als 2
% if { 1 < 2 } { puts "Stimmt" } else { puts "Stimmt nicht" }
Stimmt
%
% # Nein, 1 ist nicht größer als 2
% if { 1 > 2 } { puts "Stimmt" } else { puts "Stimmt nicht" }
Stimmt nicht
%



