Skip to content

Latest commit

 

History

History
55 lines (38 loc) · 2.42 KB

.DeepDive..de.md

File metadata and controls

55 lines (38 loc) · 2.42 KB

diver

Technical Deep Dive

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!

Hilfe System

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!