<?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
><quote
>Liefert alle Elemente im Feld im <emphasis
>Schlüssel\tWert\n</emphasis
> Format.</quote
></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>
