<?xml version="1.0"  encoding="UTF-8" ?>

<sect1 id="specials">
<sect1info>
<title
>Specielle og indbyggede globale variable</title>
<authorgroup>
<author
><firstname
></firstname
> <surname
></surname
> <affiliation
><address
> <email
></email>
</address
></affiliation>
</author>

&rune.laursen.role; 

</authorgroup>
</sect1info>

<title
>Specielle og indbyggede globale variable</title>

<para
>Specielle er funktioner der behandles af &kommander;. Du skal være opmærksom på at indtil &kommander; har en fuldstændig fortolker, vil alle specielle eksekveres først og derefter eksekveres scriptet. I de fleste tilfælde er dette ikke et problem, men somme tider opstår der problemer. </para>

<variablelist>
<varlistentry>
<term
><function
>@dcop(<parameter
>appId</parameter
>, <parameter
>objekt</parameter
>, <parameter
>funktion</parameter
>, <parameter
>argumenter</parameter
>)</function
></term>
<listitem>
<para
>Lav et &DCOP;-kald. @DCOP(<quote
>kmail</quote
>, <quote
>KMailIface</quote
>, <quote
>checkMail()</quote
>, <quote
></quote
>) </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@dcopid</function
></term>
<listitem>
<para
>Processens &DCOP;-ID (kmdr-executor-@pid) </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@dialog(<parameter
>dialog</parameter
>[,<parameter
>parametre</parameter
>])</function
></term>
<listitem>
<para
>Starter den givne kommander-dialog. Dialogen søges i dialogkataloget og i det aktuelle katalog, i den rækkefølge. Dette kommer før kaldet til executoren og sætter standardkataloget til den Kommander-programmet findes i. Parametre kan overføres i sædvanlig UNIX-stil eller overføres som <quote
>variabel=værdi</quote
>. Du kan derefter finde overførte parametre i den globale samling. @global(variable) ville returnere <quote
>værdi</quote
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@env(<parameter
>miljøVariabel</parameter
>)</function
></term>
<listitem>
<para
>Udvides til den givne miljøvariabel. @env(PWD) udvides til $PWD. Husk at <quote
>$</quote
> er en del af skallen og ikke må bruges. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@exec(<parameter
>kommando</parameter
>)</function
></term>
<listitem>
<para
>returnerer uddata ved eksekveringen af den givne kommando @exec(ls -l). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@execBegin ... @execEnd</function
></term>
<listitem>
<para
>ligesom <function
>@exec</function
>, men understøtter shebang og multilinje scripter. Dette servicerer forskellige scriptsprog, enten ved at erklære dem eller ved at bruge en shebang. </para>
<itemizedlist>
<listitem
><para
><function
>@execBegin(php)</function
></para
></listitem>
<listitem
><para
><function
>@execBegin</function
>#!/usr/bin/php</para
></listitem>
</itemizedlist>
<para
>Den første bruger navnet på <acronym
>PHP</acronym
>-kørbare. &kommander; søger i PATH efter <application
>php</application
> og ser efter et sted uden din sti, om den er registreret i &kommander; hvis ikke den findes. Hvis ikke før den brugeren opmærksom på at den ikke blev fundet. Det andet eksempel bruger den klassiske <quote
>shebang</quote
> som kan have nogle fordele og problemer. Hvis du har en betaudgave af <acronym
>PHP5</acronym
> i f.eks. <filename
>/usr/local/bin</filename
> som ikke ville blive fundet fordi der søges i <filename
>/usr/bin</filename
> er dette brugbart. Hvis du derimod distribuerer dialogen til en som kun har <acronym
>PHP</acronym
> i <filename
>/usr/local/bin</filename
> ville den ikke blive fundet når der bruges en shebang. Så at bruge shebang skal tages med forbehold og det anbefales at bruge den eksekverbare hvis du deler filer.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@global(<parameter
>variabel</parameter
>)</function
></term>
<listitem>
<para
>udvides til værdien af den givne globale variabel. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@null</function
></term>
<listitem>
<para
>Returnerer null. Nu da Kommander undersøger for tom widgetText på kørselstidspunktet, forebygger dette, fejlagtige fejl hvis en kontrol har en tilstand der ikke er sat.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@parentPid</function
></term>
<listitem>
<para
>Forældreprocessens &PID;. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@pid</function
></term>
<listitem>
<para
>Processens &PID;. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@readSetting(<parameter
>nøgle</parameter
>, <parameter
>standardVærdi</parameter
>)</function
></term>
<listitem>
<para
>læser en værdi fra <filename
>kommanderrc</filename
> </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@selectedWidgetText</function
></term>
<listitem>
<para
>det markerede indhold i en kontrol som kan vise mere end en værdi, som listekontroller </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@setGlobal(<parameter
>variabel</parameter
>, <parameter
>værdi</parameter
>)</function
></term>
<listitem>
<para
>Sætter den globale variabel til den givne værdi. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@widgetText</function
></term>
<listitem>
<para
>en kontrols indhold </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@writeSetting(<parameter
>nøgle</parameter
>, <parameter
>værdi</parameter
>)</function
></term>
<listitem>
<para
>skriv værdi til <filename
>kommanderrc</filename
> </para>
</listitem>
</varlistentry>
</variablelist>

<sect2 id="arrays">
<title
>Array-funktionsgruppe</title>

<variablelist>
<varlistentry>
<term
><function
>@Array.values(<parameter
>array</parameter
>)</function
></term>
<listitem>
<para
>Returnerer EOL-adskilt liste af alle værdier i arrayet. Kan bruges til at gennemgå et array.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.keys(<parameter
>array</parameter
>)</function
></term>
<listitem>
<para
>Returnerer en EOL-adskilt liste af alle nøgler i arrayet.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.setValue(<parameter
>array</parameter
>, <parameter
>nøgle</parameter
>, <parameter
>værdi</parameter
>)</function
></term>
<listitem>
<para
>Sætter en nøgle og en værdi til et element i et array. Eksisterer der ikke et array i forvejen, oprettes der et.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.clear(<parameter
>array</parameter
>)</function
></term>
<listitem>
<para
>Fjerner alle elementer i et array.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.count(<parameter
>array</parameter
>)</function
></term>
<listitem>
<para
>Returnerer antallet af elementer i arrayet.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.value(<parameter
>array</parameter
>,<parameter
>nøgle</parameter
>)</function
></term>
<listitem>
<para
>Returnerer værdie associeret med den givne nøgle.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.remove(<parameter
>array</parameter
>,<parameter
>nøgle</parameter
>)</function
></term>
<listitem>
<para
>Fjern element med given nøgle fra arrayet.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.fromString(<parameter
>array</parameter
>,<parameter
>streng</parameter
>)</function
></term>
<listitem>
<para
>Tilføjer alle elementer i strengen til arrayet. Strengen skal have formatet:<emphasis
>nøgle\tværdi\n</emphasis
>."</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@Array.toString(<parameter
>array</parameter
>,<parameter
>streng</parameter
>)</function
></term>
<listitem>
<para
>"Returnerer alle elementer i array i <emphasis
>nøgle\tværdi\n</emphasis
> format."</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="files">
<title
>Filfunktionsgruppe</title>
<variablelist>

<varlistentry>
<term
><function
>@File.read(<parameter
>fil</parameter
>)</function
></term>
<listitem>
<para
>Returnerer indhold af den givne fil.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@File.write(<parameter
>fil</parameter
><parameter
>streng</parameter
>)</function
></term>
<listitem>
<para
>Skriv given streng til en fil.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@File.append(<parameter
>fil</parameter
><parameter
>streng</parameter
>)</function
></term>
<listitem>
<para
>Tilføj given streng til slutningen af en fil.</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="strings">
<title
>Strengfunktionsgruppe</title>
<variablelist>

<varlistentry>
<term
><function
>@String.length(<parameter
>streng</parameter
>)</function
></term>
<listitem>
<para
>Returnerer antal tegn i strengen.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.contains(<parameter
>streng</parameter
>,<parameter
>understreng</parameter
>)</function
></term>
<listitem>
<para
>Undersøger om strengen indeholder den givne understreng.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.find(<parameter
>streng</parameter
>)</function
></term>
<listitem>
<para
>Returnerer en understrengs position i strengen eller -1 hvis den ikke findes."</para>
<note
><para
>Dette får en valgfri startposition angivet med et heltal til søgning efter næste, i alfa 6.</para
></note>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.left(<parameter
>streng</parameter
>, <parameter
>heltalt</parameter
>)</function
></term>
<listitem>
<para
>Returnerer første n tegn i strengen.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.right(<parameter
>streng</parameter
>, <parameter
>heltal</parameter
>)</function
></term>
<listitem>
<para
>Returnerer sidste n tegn i strengen.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.mid(<parameter
>streng</parameter
>, <parameter
>heltal startposition</parameter
>, <parameter
>heltal slutposition</parameter
>)</function
></term>
<listitem>
<para
>Returnerer strengens understreng, begynder fra given position.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.remove(<parameter
>streng</parameter
>, <parameter
>understreng</parameter
>)</function
></term>
<listitem>
<para
>Fjerner alle forekomster af den givne understreng.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.replace(<parameter
>streng</parameter
>, <parameter
>understreng find</parameter
>, <parameter
>understreng erstat</parameter
>)</function
></term>
<listitem>
<para
>Erstatter alle forekomster af en given understreng med den givne erstatningsstreng.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.upper(<parameter
>streng</parameter
>)</function
></term>
<listitem>
<para
>Konverterer strengen til store bogstaver.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.lower(<parameter
>streng</parameter
>)</function
></term>
<listitem>
<para
>Konverterer strengen til små bogstaver.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.compare(<parameter
>streng</parameter
>, <parameter
>streng</parameter
>)</function
></term>
<listitem>
<para
>Sammenligner to strenge. Returnerer 0, hvis de er ens, -1 hvis den første er mindst, 1 hvis den første er størst.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.isEmpty(<parameter
>streng</parameter
>)</function
></term>
<listitem>
<para
>Undersøger om strengen er tom.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><function
>@String.isNumber(<parameter
>streng</parameter
>)</function
></term>
<listitem>
<para
>Undersøger om strengen er et gyldigt tal.</para>
</listitem>
</varlistentry>

</variablelist>
</sect2>

<sect2 id="builtins">
<title
>Indbyggede globale</title>
<para
>Indbyggede globale tilgås ligesom almindelige globale variable med <function
>@global</function
>.</para>
<variablelist>
<varlistentry>
<term
><function
>@global(_KDDIR)</function
></term>
<listitem>
<para
>Katalogen den aktuelle dialog er i.</para>
</listitem>
</varlistentry>
<varlistentry>
<term
><function
>@global(_NAME)</function
></term>
<listitem
><para
>Navnet på dialogen</para
></listitem>
</varlistentry>
</variablelist>
</sect2>

</sect1>
