<?xml version="1.0" encoding="UTF-8" ?>
<sect1 id="specials">
<sect1info>
<title>Anweisungen und eingebaute globale Variable</title>
<authorgroup>
<author><firstname></firstname> <surname></surname> <affiliation><address> <email></email>
</address></affiliation>
</author>
<othercredit role="translator"><firstname>Georg</firstname><surname>Schuster</surname><affiliation><address><email>gschuster@utanet.at</email></address></affiliation><contrib>Deutsche Übersetzung</contrib></othercredit>
</authorgroup>
</sect1info>
<title>Anweisungen und eingebaute globale Variable</title>
<para>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. </para>
<variablelist>
<varlistentry>
<term><function>@dcop(<parameter>AnwendungsId</parameter>, <parameter>Objekt</parameter>, <parameter>Funktion</parameter>, <parameter>Argumente</parameter>)</function></term>
<listitem>
<para>Führe einen &DCOP; Aufruf durch. @dcop(<quote>kmail</quote>, <quote>KMailIface</quote>, <quote>checkMail()</quote>, <quote></quote>) </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@dcopid</function></term>
<listitem>
<para>Die &DCOP;-ID des Prozesses. (kmdr-executor-@pid) </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@dialog(<parameter>Dialog</parameter>[,<parameter>Parameter</parameter>])</function></term>
<listitem>
<para>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. <quote>Variable=Wert</quote> übergeben werden. Übergebene Parameter können im Globalbereich gefunden werden. @global(Variable) würde den <quote>Wert</quote> zurückgeben. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@env(<parameter>Umgebungsvariable</parameter>)</function></term>
<listitem>
<para>Füllt die angegebene Umgebungsvariable aus. @env(PWD) setzt $PWD ein. Bitte beachten Sie, dass <quote>$</quote> ein Teil der Shell ist und nicht verwendet werden sollte. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@exec(<parameter>Befehl</parameter>)</function></term>
<listitem>
<para>liefert die Ausgabe des damit ausgeführten Befehls zurück. @exec(ls -l). </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@execBegin ... @execEnd</function></term>
<listitem>
<para>gleich wie <function>@exec</function>, unterstützt aber mehrzeilige um Ummantelungs-Skripte. Das dient für einige Skriptsprachen entweder über eine Deklaration oder mittels einer Ummantelung. </para>
<itemizedlist>
<listitem><para><function>@execBegin(php)</function></para></listitem>
<listitem><para><function>@execBegin</function>#!/usr/bin/php</para></listitem>
</itemizedlist>
<para>Das Erste benutzt den Namen des <acronym>PHP</acronym>-Programms. &kommander; durchsucht den Pfad PATH nach <application>php</application> 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, dass es nicht gefunden werden konnte. Das zweite Beispiel benutzt die klassische <quote>Ummantelung</quote>, die Vorteile aber auch Probleme bringen kann. Wenn zum Beispiel eine Beta-Version von <acronym>PHP5</acronym> in <filename>/usr/local/bin</filename> vorhanden ist, die nicht gefunden wird, weil es in <filename>/usr/bin</filename> eine gibt , wäre dies nützlich. Wird der Dialog aber von jemandem verwendet, der <acronym>PHP</acronym> nur in <filename>/usr/local/bin </filename>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.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@global(<parameter>Variable</parameter>)</function></term>
<listitem>
<para>wird mit dem Inhalt der angegebenen globalen Variable ersetzt. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@null</function></term>
<listitem>
<para>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.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@parentPid</function></term>
<listitem>
<para>Die &PID; des Vaterprozesses. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@pid</function></term>
<listitem>
<para>Die &PID; des Prozesses. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@readSetting(<parameter>Schlüssel</parameter>, <parameter>Standardwert</parameter>)</function></term>
<listitem>
<para>liest einen Wert aus der <filename>kommanderrc</filename> </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@selectedWidgetText</function></term>
<listitem>
<para>der ausgewählte Inhalt in einem Bedienelement, das mehrere Werte anzeigen kann, wie etwa Listen </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@setGlobal(<parameter>Variable</parameter>, <parameter>Wert</parameter>)</function></term>
<listitem>
<para>Setzt die globale Variable auf den angegebenen Wert. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@widgetText</function></term>
<listitem>
<para>der Inhalt eines Bedienelementes </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@writeSetting(<parameter>Schlüssel</parameter>, <parameter>Wert</parameter>)</function></term>
<listitem>
<para>schreibe den Wert in die <filename>kommanderrc</filename> </para>
</listitem>
</varlistentry>
</variablelist>
<sect2 id="arrays">
<title>Feldfunktionengruppe (Arrays)</title>
<variablelist>
<varlistentry>
<term><function>@Array.values(<parameter>Feld</parameter>)</function></term>
<listitem>
<para>Gibt eine mit Zeilenschaltungen getrennte Liste aller Werte eines Feldes zurück. Kann zum Durchgehen eines Feldes verwendet werden.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@Array.keys(<parameter>Feld</parameter>)</function></term>
<listitem>
<para>Gibt eine mit Zeilenschaltungen getrennte Liste aller Schlüssel im Feld zurück.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@Array.setValue(<parameter>Feld</parameter>, <parameter>Schlüssel</parameter>, <parameter>Wert</parameter>)</function></term>
<listitem>
<para>Setzt einen Schlüssel und Wert für ein Element eines Feldes. Wenn das Feld nicht existiert, wird es erstellt.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@Array.clear(<parameter>Feld</parameter>)</function></term>
<listitem>
<para>Entfernt alle Elemente aus einem Feld.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@Array.count(<parameter>Feld</parameter>)</function></term>
<listitem>
<para>Liefert die Anzahl der Elemente in einem Feld.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@Array.value(<parameter>Feld</parameter>,<parameter>Schlüssel</parameter>)</function></term>
<listitem>
<para>Gibt den mit dem angegebenen Schlüssel verbundenen Wert zurück.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@Array.remove(<parameter>Feld</parameter>,<parameter>Schlüssel</parameter>)</function></term>
<listitem>
<para>Entfernt das Element mit dem angegeben Schlüssel aus dem Feld.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@Array.fromString(<parameter>Feld</parameter>,<parameter>Zeichenkette</parameter>)</function></term>
<listitem>
<para>Fügt alle Elemente der Zeichenkette dem Feld hinzu. Die Zeichenkette sollte ein <emphasis>Schlüssel\tWert\n</emphasis> Format haben."</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@Array.toString(<parameter>Feld</parameter>,<parameter>Zeichenkette</parameter>)</function></term>
<listitem>
<para>"Liefert alle Elemente im Feld im <emphasis>Schlüssel\tWert\n</emphasis> Format."</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="files">
<title>Dateifunktionengruppe</title>
<variablelist>
<varlistentry>
<term><function>@File.read(<parameter>Datei</parameter>)</function></term>
<listitem>
<para>Liefert den Inhalt der angegebenen Datei zurück.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@File.write(<parameter>Datei</parameter><parameter>Zeichenkette</parameter>)</function></term>
<listitem>
<para>Schreibt die angegebene Zeichenkette in eine Datei.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@File.append(<parameter>Datei</parameter><parameter>Zeichenkette</parameter>)</function></term>
<listitem>
<para>Hängt die angegebene Zeichenkette an das Ende der Datei an.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="strings">
<title>Zeichenketten-Funktionengruppe</title>
<variablelist>
<varlistentry>
<term><function>@String.length(<parameter>Zeichenkette</parameter>)</function></term>
<listitem>
<para>Gibt die Anzahl der Zeichen einer Zeichenkette zurück.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.contains(<parameter>Zeichenkette</parameter>,<parameter>Unterzeichenkette</parameter>)</function></term>
<listitem>
<para>Prüft, ob die Zeichenkette die angegebene Teilzeichenkette enthält.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.find(<parameter>Zeichenkette</parameter>)</function></term>
<listitem>
<para>Liefert die Position einer Teilzeichenkette in einer Zeichenkette, oder -1, wenn sie darin nicht gefunden wurde."</para>
<note><para>Dies wird in Alpha6 eine optionale ganzzahlige Startposition zum Finden weiterer Treffer haben.</para></note>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.left(<parameter>Zeichenkette</parameter>, <parameter>Ganzzahl</parameter>)</function></term>
<listitem>
<para>Liefert die ersten n Zeichen der Zeichenkette zurück.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.right(<parameter>Zeichenkette</parameter>, <parameter>Ganzzahl</parameter>)</function></term>
<listitem>
<para>Liefert die letzten n Zeichen der Zeichenkette zurück.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.mid(<parameter>Zeichenkette</parameter>, <parameter>Ganzzahl Start</parameter>, <parameter>Ganzzahl Ende</parameter>)</function></term>
<listitem>
<para>Liefert eine Teilzeichenkette aus der Zeichenkette, beginnend mit der angegebene Position.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.remove(<parameter>Zeichenkette</parameter>, <parameter>Teilzeichenkette</parameter>)</function></term>
<listitem>
<para>Entfernt alle Vorkommen einer angegebenen Teilzeichenkette.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.replace(<parameter>Zeichenkette</parameter>, <parameter>Teilzeichenkette zu finden</parameter>, <parameter>Teilzeichenkette zu ersetzen</parameter>)</function></term>
<listitem>
<para>Ersetzt alle Vorkommen einer angegebenen Teilzeichenkette mit dem angegebenen Ersatz.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.upper(<parameter>Zeichenkette</parameter>)</function></term>
<listitem>
<para>Wandelt die Zeichenkette in Großbuchstaben um.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.lower(<parameter>Zeichenkette</parameter>)</function></term>
<listitem>
<para>Wandelt die Zeichenkette in Kleinbuchstaben um.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.compare(<parameter>Zeichenkette</parameter>, <parameter>Zeichenkette</parameter>)</function></term>
<listitem>
<para>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</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.isEmpty(<parameter>Zeichenkette</parameter>)</function></term>
<listitem>
<para>Prüft, ob die Zeichenkette leer ist.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@String.isNumber(<parameter>Zeichenkette</parameter>)</function></term>
<listitem>
<para>Prüft, ob die Zeichenkette eine gültige Zahl ist.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="builtins">
<title>Eingebaute globale Konstanten</title>
<para>Eingebaute globale Konstanten werden gleich wie reguläre globale Variable mit <function>@global</function> angesprochen.</para>
<variablelist>
<varlistentry>
<term><function>@global(_KDDIR)</function></term>
<listitem>
<para>Der Ordner, in dem sich der aktuelle Dialog befindet.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>@global(_NAME)</function></term>
<listitem><para>Der Name des Dialoges</para></listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>