TP_VIEW verwendet Kommando-Strings zur Ausführung einer bestimmten Aufgabe.
Diese Zeichenketten basieren auf einer internen Variable (cmd_list). Der Wert der Variable ist die Kommando-ID.
- Einige Befehle erfordern mehrere Parameter bzw. Argumente.
- Einfache Befehle werden mit einem String aufgerufen oder ausgeführt, der den Befehlsnamen oder die ID enthält.
- :CALL TP_VIEW('HELP') oder :CALL TP_VIEW(11);
- Befehle der gleichen Funktionsgruppe haben den Gruppennamen durch einen Punkt vom Befehlsnamen getrennt.
- :CALL TP_VIEW('FORCE.VIEW');
CMD_LIST Variable:
[TP_VIEW]CMD_LIST Storage: DRAM Access: RW : CMD_LIST_T = Field: CMD_LIST.HELP Access: RW: INTEGER = 11 ... Field: CMD_LIST.WIDE_USER Access: RW: INTEGER = 17 Field: CMD_LIST.SCREEN.SINGLE Access: RW: INTEGER = 21 Field: CMD_LIST.SCREEN.WIDE Access: RW: INTEGER = 22 ...
Karel-Code: Ermittelt die Befehls-ID, indem sie aus dem ersten TP-Argument extrahiert wird
CMD.CURR.ID = getINTByNam('CMD_LIST.'+ GET_TPE_STR(1))
Der "Trick" ist, dass wir auf die Variable cmd_list 'BYNAME-builtin' zugreifen.
Wir benötigen nur eine einfache Stringberechnung, um eine Befehls-ID zu erhalten. Wenn man versucht, einen "Befehl" mit einer ungültigen Befehlszeichenfolge wie "HELO" statt "HELP" aufzurufen, erhält der Benutzer eine einfache, aber informative (System-)Fehlermeldung.
Die Verwendung von Befehls-IDs ist weit verbreitet, weil sie schnell(!) und einfach ist (meistens). Der Nachteil ist, dass der (Benutzer/Entwickler) mit Nummern statt mit 'benannten' Befehlen umgehen muss.
Der Vorteil des Zugriffs auf Befehle mit 'BYNAME-builtin' ist, dass es schnell UND einfach für Entwickler und Benutzer ist!
Es gibt eine zweite Variable namens [TP_VIEW]CMD_HELP mit derselben Struktur, aber vom Typ string. Dieser String enthält eine kleine befehlsspezifische Hilfe.
[TP_VIEW]CMD_HELP Speicherung: DRAM Zugriff: RW : CMD_HELP_T = Feld: CMD_HELP.HELP Zugriff: RW: STRING[64] = 'TP_VIEW('HELP'); zeige Web_Hilfe dieses Programms'
Es ist also immer(!) eine einfache Hilfe im Programm enthalten. Es ist möglich, über die Web-Ausführung dieses Programms auf die va-Datei zuzugreifen, z.B.
_hostname_/karel/tp_view
Die va-Datei und auch eine optionale Befehls-Referenz-Datei werden dynamisch in die Web-Hilfe eingebunden!