# Anweisungen und eingebaute globale Variable

Georg
Schuster

    gschuster@utanet.at

# Anweisungen und eingebaute globale Variable

Anweisungen sind Funktionen, die von &kommander; ausgeführt werden. Bis &kommander; über einem vollständigen Parser verfügt, werden alle Anweisungen vor dem Skript ausgeführt. Meistens ist das kein Problem.

`@dcop(`AnwendungsId`, `Objekt`, `Funktion`, `Argumente`)`

  Führe einen &DCOP; Aufruf durch. @dcop(kmail, KMailIface, checkMail(), )

`@dcopid`

  Die &DCOP;-ID des Prozesses. (kmdr-executor-@pid)

`@dialog(`Dialog`[,`Parameter`])`

  Zeigt den bestimmten Kommander-Dialog an. Der Dialog wird im Dialogordner und im aktuellen Ordner gesucht, in dieser Reihenfolge. Das bestimmt den Aufruf von kommander-executor vor und setzt den Standardordner auf den Ordner, in dem sich die Kommander-Anwendung befindet. Parameter können im in Unix üblichen Weg oder namentlich wie z. B. Variable=Wert übergeben werden. Übergebene Parameter können im Globalbereich gefunden werden. @global(Variable) würde den Wert zurückgeben.

`@env(`Umgebungsvariable`)`

  Füllt die angegebene Umgebungsvariable aus. @env(PWD) setzt $PWD ein. Bitte beachten, daß $ ein Teil der Shell ist und nicht verwendet werden sollte.

`@exec(`Befehl`)`

  liefert die Ausgabe des damit ausgeführten Befehls zurück. @exec(ls -l).

`@execBegin ... @execEnd`

  gleich wie `@exec`, unterstützt aber mehrzeilige um Ummantelungs-Skripte. Das dient für einige Skriptsprachen entweder über eine Deklaration oder mittels einer Ummantelung.

  - `@execBegin(php)`

  - `@execBegin`#!/usr/bin/php

  Das Erste benutzt den Namen des PHP Programmes. &kommander; durchsucht den Pfad PATH nach php und sieht, wenn es nicht gefunden wird, nach. ob es mit &kommander; außerhalb des Pfades registriert ist. Ist dies nicht der Fall, meldet es dem Benutzer, daß es nicht gefunden werden konnte. Das zweite Beispiel benutzt die klassische Ummantelung, die Vorteile aber auch Probleme bringen kann. Wenn zum Beispiel eine Beta-Version von PHP5 in `/usr/local/bin` vorhanden ist, die nicht gefunden wird, weil es in `/usr/bin` eine gibt , wäre dies nützlich. Wird der Dialog aber von jemandem verwendet, der PHP nur in `/usr/local/bin` hat, würde es mit der Ummantelung nicht gefunden. Deshalb ist die Verwendung von Ummantelungen problematisch und die Verwendung des Programmes wird empfohlen, wenn die Dateien weitergegeben werden.

`@global(`Variable`)`

  wird mit dem Inhalt der angegebenen globalen Variable ersetzt.

`@null`

  Liefert Null zurück. Da &kommander; nun bei der Ausführung auf leere widgetText prüft, verhindert dies im Falle eines undefinierten Status des Bedienelementes Fehler.

`@parentPid`

  Die &PID; des Vaterprozesses.

`@pid`

  Die &PID; des Prozesses.

`@readSetting(`Schlüssel`, `Standardwert`)`

  liest einen Wert aus der `kommanderrc`

`@selectedWidgetText`

  der ausgewählte Inhalt in einem Bedienelement, das mehrere Werte anzeigen kann, wie etwa Listen

`@setGlobal(`Variable`, `Wert`)`

  Setzt die globale Variable auf den angegebenen Wert.

`@widgetText`

  der Inhalt eines Bedienelementes

`@writeSetting(`Schlüssel`, `Wert`)`

  schreibe den Wert in die `kommanderrc`

## Feldfunktionengruppe (Arrays)

`@Array.values(`Feld`)`

  Gibt eine mit Zeilenschaltungen getrennte Liste aller Werte eines Feldes zurück. Kann zum Durchgehen eines Feldes verwendet werden.

`@Array.keys(`Feld`)`

  Gibt eine mit Zeilenschaltungen getrennte Liste aller Schlüssel im Feld zurück.

`@Array.setValue(`Feld`, `Schlüssel`, `Wert`)`

  Setzt einen Schlüssel und Wert für ein Element eines Feldes. Wenn das Feld nicht existiert, wird es erstellt.

`@Array.clear(`Feld`)`

  Entfernt alle Elemente aus einem Feld.

`@Array.count(`Feld`)`

  Liefert die Anzahl der Elemente in einem Feld.

`@Array.value(`Feld`,`Schlüssel`)`

  Gibt den mit dem angegebenen Schlüssel verbundenen Wert zurück.

`@Array.remove(`Feld`,`Schlüssel`)`

  Entfernt das Element mit dem angegeben Schlüssel aus dem Feld.

`@Array.fromString(`Feld`,`Zeichenkette`)`

  Fügt alle Elemente der Zeichenkette dem Feld hinzu. Die Zeichenkette sollte ein Schlüssel\tWert\n Format haben.

`@Array.toString(`Feld`,`Zeichenkette`)`

  "Liefert alle Elemente im Feld im Schlüssel\tWert\n Format."

## Dateifunktionengruppe

`@File.read(`Datei`)`

  Liefert den Inhalt der angegebenen Datei zurück.

`@File.write(`Datei``Zeichenkette`)`

  Schreibt die angegebene Zeichenkette in eine Datei.

`@File.append(`Datei``Zeichenkette`)`

  Hängt die angegebene Zeichenkette an das Ende der Datei an.

## Zeichenketten-Funktionengruppe

`@String.length(`Zeichenkette`)`

  Gibt die Anzahl der Zeichen einer Zeichenkette zurück.

`@String.contains(`Zeichenkette`,`Unterzeichenkette`)`

  Prüft, ob die Zeichenkette die angegebene Teilzeichenkette enthält.

`@String.find(`Zeichenkette`)`

  Liefert die Position einer Teilzeichenkette in einer Zeichenkette, oder -1, wenn sie darin nicht gefunden wurde."

  Dies wird in Alpha6 eine optionale ganzzahlige Startposition zum Finden weiterer Treffer haben.

`@String.left(`Zeichenkette`, `Ganzzahl`)`

  Liefert die ersten n Zeichen der Zeichenkette zurück.

`@String.right(`Zeichenkette`, `Ganzzahl`)`

  Liefert die letzten n Zeichen der Zeichenkette zurück.

`@String.mid(`Zeichenkette`, `Ganzzahl Start`, `Ganzzahl Ende`)`

  Liefert eine Teilzeichenkette aus der Zeichenkette, beginnend mit der angegebene Position.

`@String.remove(`Zeichenkette`, `Teilzeichenkette`)`

  Entfernt alle Vorkommen einer angegebenen Teilzeichenkette.

`@String.replace(`Zeichenkette`, `Teilzeichenkette zu finden`, `Teilzeichenkette zu ersetzen`)`

  Ersetzt alle Vorkommen einer angegebenen Teilzeichenkette mit dem angegebenen Ersatz.

`@String.upper(`Zeichenkette`)`

  Wandelt die Zeichenkette in Großbuchstaben um.

`@String.lower(`Zeichenkette`)`

  Wandelt die Zeichenkette in Kleinbuchstaben um.

`@String.compare(`Zeichenkette`, `Zeichenkette`)`

  Vergleicht zwei Zeichenketten. Gibt 0 zurück, wenn sie gleich sind, -1, wenn die Erste kleiner ist und 1, wenn die Erste größer ist

`@String.isEmpty(`Zeichenkette`)`

  Prüft, ob die Zeichenkette leer ist.

`@String.isNumber(`Zeichenkette`)`

  Prüft, ob die Zeichenkette eine gültige Zahl ist.

## Eingebaute globale Konstanten

Eingebaute globale Konstanten werden gleich wie reguläre globale Variable mit `@global` angesprochen.

`@global(_KDDIR)`

  Der Ordner, in dem sich der aktuelle Dialog befindet.

`@global(_NAME)`

  Der Name des Dialoges